`

设计泛型堆栈类

阅读更多
package com.type.ch02;

public class LinkedStack<T> {

	private static class Node<U>{
		U item;
		Node<U> next;
		Node() {
			this.item = null;
			this.next =null;
		}
		Node(U item, Node<U> next) {
			this.item = item;
			this.next = next;
		}
		
		boolean end() {return item == null && next == null;}
	}
	
	private Node<T> top = new Node<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) {
		LinkedStack<String> lss = new LinkedStack<String>();
		for(String s : "aaa bbb ccc".split(" ")){
			lss.push(s);
		}
		String s;
		while((s=lss.pop()) != null){
			System.out.println(s);
		}
	}
}

 

ccc
bbb
aaa

 

分享到:
评论

相关推荐

    第8章 集合类与泛型程序设计

    Java中的集合类与泛型程序设计是Java开发中不可或缺的一部分,它们为开发者提供了处理和组织对象的高效工具。本章主要介绍了以下几个核心概念: 8.1 集合类结构: Java集合框架由两个主要的接口树组成。第一个树以...

    C#泛型类的使用的点对点的的的点对点的

    泛型主要应用于集合类,如列表、字典、堆栈和队列等,使得这些集合能够处理各种不同类型的元素,而无需每次都创建一个新的类来适应特定的数据类型。 创建泛型类时,首先需要确定哪些部分应该通用化为类型参数。...

    第十五课 泛型基础1

    在实际前端开发中,我们可以在React组件、数据处理函数、甚至自定义数据结构(如队列、堆栈等)中应用泛型。例如,创建一个泛型数组操作函数,可以处理任何类型的数组,而不局限于特定类型: ```typescript ...

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

    在本文中,我们将讨论...总的来说,这个课程设计提供了一个实际应用堆栈数据结构的例子,通过堆栈实现了中缀表达式到后缀表达式的转换以及后缀表达式的计算,展示了如何在程序设计中有效地处理数学表达式的求值问题。

    面向对象程序设计英文教学课件:12_Templates.ppt

    在这个类模板中,`T`也是一个占位符,表示我们可以用任何类型来实例化这个堆栈类,如`Stack&lt;int&gt;`、`Stack&lt;std::string&gt;`等。类模板的成员函数也可以是模板,这样可以进一步增强其通用性。 学习模板的资源包括书籍...

    C程序设计资料全集PPT课件.pptx

    非泛型集合是基于Object类型作为元素,例如哈希表(Hashtable)、队列(Queue)、堆栈(Stack)和列表(ArrayList)。泛型集合则是为了提高类型安全性,比如ArrayList的泛型版本List和Hashtable的泛型版本Dictionary...

    C#程序设计复习总结归类.pdf

    本文档总结了C#程序设计的基础知识点,包括控制语句、数据类型、类、方法、属性、委托、事件、异常处理、窗体、控件、文件访问、数据库、绘图等。下面是详细的知识点总结: 一、C#语言特点 * C#是一种简洁、类型...

    C#语言程序设计基础知识

    值类型(如int、bool、char等)存储在堆栈中,每个变量都有自己独立的存储位置,而引用类型(如类、对象、字符串、数组等)则在堆栈中存储对内存中实际数据的引用。值类型和引用类型之间的转换可以通过装箱(Boxing...

    C++语言程序设计教程

    5. **模板与泛型编程**:C++中的模板用于创建通用代码,可以在不同数据类型上重用。 6. **异常处理**:学习如何捕获和处理程序运行时可能出现的错误。 7. **内存管理**:了解动态内存分配(new和delete)以及指针...

    fxcop规则说明

    26. 泛型类的方法应该提供类型参数:这样可以利用泛型的优势,提供类型安全和灵活性。 27. 集合接口的实现中应该使用强类型的成员:以增强类型安全,避免隐式类型转换。 28. 自定义的异常应该实现标准构造方法:...

    Java数据结构与算法中的源代码和applet - 站长下载

    第五章泛型类与方法 第六章递归 第七章排序算法 第八章集合类型 第九章基于数组的列表集合 第十章链表 第十一章实现LinkedList类 第十二章迭代器 第十三章迭代器的实现 第十四章堆栈 第十五章队列与优先队列 第十六...

    从FxCop归纳出来的一些规范建议

    1. **抽象类不应该声明构造方法**:抽象类的设计目的是为了被继承,它们不应该有实例化的需求,因此不应包含构造函数,以防止误实例化。 2. **程序集应该具有强名称**:强名称的程序集可以确保其完整性,防止篡改,...

    数据结构与算法:语言描述(中英文)

    泛型编程允许程序员编写一个类或一种方法,并且把它用于众多数据类型。泛型编程是C#语言一种重要的新特性(在C#2.0以及更高版本中可用)。这种特性是如此重要以至于在System.Collections.Generic命名空间中存在一个...

    C#数据结构(非大学教材,真正面向程序开发人员)

    第5章和第6章介绍了堆栈、队列以及BitArray类,这些都是处理日常数据处理问题的关键。 第7章讲述了字符串处理,包括String类和StringBuilder类,强调了它们在C#中处理数据的重要性。 第8章介绍了正则表达式,提供...

    编程新手真言......

    3.12 类VB,DELPHI类RAD语言分析 82 第4章 语言最小内核(C) 83 4.1 C与C++是二种不同的语言 83 4.2 C的数组,指针与字符串 84 4.3 C的输入与输出流 84 4.4 C的类型系统与表达式 85 4.5 二进制指令看循环 85 4.6 所谓...

    C++程序设计笔试样卷(下)

    4. **模板**:模板是C++中实现泛型编程的关键工具,它可以为不同类型创建通用的函数或类。类模板可以生成一类相关的类,而函数模板则可以生成一系列相关的函数。模板参数可以是类型参数或非类型参数,使用时按照位置...

    C#数据结构C#数据结构

    泛型是C#2.0及更高版本的一个重要特性,允许编写适用于多种数据类型的类和方法,System.Collections.Generic命名空间就包含了一系列泛型数据结构。此外,书中还讲解了评估数据结构和算法性能的方法,帮助读者理解...

    Java-华山版.pdf

    * 集合处理:使用 Java Collections Framework,遵循泛型编程,避免裸类型。 * 并发处理:使用多线程和线程池,避免线程爆炸和死锁。 二、异常日志 * 异常类型:区分业务异常和系统异常,使用统一的异常处理机制。...

Global site tag (gtag.js) - Google Analytics