`
韩悠悠
  • 浏览: 839896 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

泛型讨论------堆栈类

 
阅读更多

使用泛型实现堆栈存储机制

 

例子:

 

public class Stack<T>{
	

	private static class Node<U>{
		U item;
		Node<U> next;

		Node(){
			item = null;
			next = null;
		}

		Node<U item,Node<U> next){
			this.item =item;
			this.next = next;
		}

		boolean end(){
			return item == null&&next ==null;
		}
	}

	private Note<T> top= New nOTE<T>();

	public void push(T item){
		top  = new Node<T>(item,top);
	}

	public T pop(){
		T result = top.item;
		if(!top.end()){
			top = top.next;
		return result;
	}

	public static void main(String[] args){
	
		Stack<String> s = new Stack<String>();
		for(String a:"sfdsfd fds fsdfd".split(" ")){
			s.push(a);
		}
		
		String b;
		whiel((b=s.pop()!=null){
			System.out.println(b);
		}
	}
}

 

 

本例子使用了末端哨兵来判断堆栈何时为空,这个末端哨兵是构造Stack的时候创建的,然后每次调用一次push方法,就会创建一个Node<T>对象,并将其连接到前一个Node<T>对象,当你调用pop方法时候,总是返回top.item;然后丢弃当前top所指的Node<T>,并将top转移到下一个Node<T>,除非你碰到了末端哨兵,就不在移动了,

 

 

下一个例子,:

一个持有特定对象的列表,每次在调用select方法的时候,可以随机的获取一个元素.

 

public class Random<T>{

	private ArrayList<T> store = new ArrayList<T>();
	private Random rand = new Random();

	public void add(T item){
		store.add(item);
	}

	public T select(){
		return store.get(rand.nextInt(store.size()));
	}
}

 

分享到:
评论

相关推荐

    泛型集合与数组应用老师找学生

    泛型集合是C#中的一个特性,允许我们创建类型安全的集合类,如List、Dictionary, TValue&gt;等。这里的"T"或"TKey", "TValue"就是泛型参数,代表了集合中元素的类型。使用泛型集合的优点在于它能够在编译时避免类型转换...

    链式结构堆栈类的类模板实现及用栈求解n皇后问题.zip

    在这个压缩包文件“链式结构堆栈类的类模板实现及用栈求解n皇后问题.zip”中,包含的可能是一个关于如何使用C#实现链式结构的堆栈类模板,以及如何运用这个堆栈来解决经典的计算机科学问题——n皇后问题。...

    方立勋30天轻松掌握JavaWeb视频笔记

    - **泛型方法与类**:详细介绍自定义泛型方法和泛型类的具体实现。 - **通配符**:解析通配符在泛型中的使用,以及其对于代码灵活性的影响。 - **限制性通配符**:探讨如何通过限定通配符的上界或下界来增加代码的...

    swift代码-泛型试验案例

    可能还会有一些额外的说明,比如如何测试泛型功能,或者讨论泛型在特定情况下的优势。 泛型在Swift中的应用非常广泛,例如在集合类型如`Array`、`Dictionary`和`Set`中。这些集合可以存储任何类型的元素,只要它们...

    C#高级编程xml wcf泛型

    接下来,我们讨论**泛型**。泛型是C#的一项重要特性,它允许我们在编写代码时定义不依赖特定数据类型的类、接口和方法。使用泛型可以提供更强的类型检查,减少类型转换,并提高代码的重用性。例如,List就是一个泛型...

    C++培训讲义2

    根据提供的C++培训讲义的信息来看,这里实际上讨论的是法语语音学中的元音部分,而非C++编程语言的相关知识点。不过,为了满足任务需求,我会尝试基于标题和描述来生成与C++相关的知识点。 ### C++培训讲义2:核心...

    .NET/C#面试题

    - 泛型类、泛型接口、泛型方法和泛型委托的使用。 4. **异常处理**: - 异常的结构:如Exception类、特定异常类,以及如何使用try/catch/finally块处理异常。 - 自定义异常:创建新的异常类并正确抛出异常。 5....

    用堆栈实现中缀转后缀表达式计算课程设计

    在本文中,我们将讨论如何使用堆栈来实现中缀表达式到后缀表达式的转换,并计算后缀表达式的结果。这个过程通常应用于计算机科学中的表达式计算,特别是编程语言的解析和计算。 首先,我们要理解中缀表达式和后缀...

    jdk-7u79-windows-x64

    在本案例中,我们讨论的是JDK的第7个主要版本的第79次更新,专为Windows 64位操作系统设计。 **1. JDK 7的主要特性:** - **类型推断(Type Inference)**:在Java 7中,引入了“钻石操作符”(), 提高了代码的...

    scjp310-065资料

    9. **泛型**:理解泛型的概念,了解其在类、接口、方法和集合中的应用。 10. **Java标准库**:熟悉常用的Java API,如Math类、String类、Date类和Collections类等。 "Testking 310-035 v12.0.pdf"这份文件可能是...

    c-c++常见面试题总结

    - 模板用于实现泛型编程,可以创建类模板和函数模板。 - 非类型模板参数和模板特化是如何工作的。 7. **异常处理** - 异常处理机制通过`try`、`catch`和`throw`关键字实现,用于处理程序运行时可能出现的错误。 ...

    最全Java面试题汇总

    - 数据类型的讨论包括原始类型(如int, double, char)和引用类型(如类、接口、数组)。 2. **面向对象编程** - 对象的创建、继承、封装、多态等概念是面试的重点。 - 掌握构造函数、抽象方法、接口的使用以及...

    CPP-Summit 2019演讲讲义.zip

    - 模板:C++中的模板允许开发者创建泛型代码,可用于处理不同数据类型,包括函数模板和类模板。 - 异常处理:C++的异常处理机制用于捕获和处理程序运行时可能出现的错误。 2. C++11/14/17新特性: - Lambda...

    C++编程思想 经典版

    - 类模板:可以创建参数化的类,用于构建泛型数据结构如堆栈、队列和关联容器等。 5. **STL(Standard Template Library)标准模板库** - 容器:如vector、list、set、map等,提供了数据结构和数据组织方式。 - ...

    Visual C# 2005开发技术

    - **类型参数**:泛型允许创建可重用的数据结构和方法,无需为每个类型实例化新的类。 - **泛型接口与泛型委托**:泛型接口定义了一组操作,而泛型委托则用于封装方法调用。 7. **并发与多线程** - **线程创建与...

Global site tag (gtag.js) - Google Analytics