`
jingwuyuan
  • 浏览: 8874 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

JAVA 堆栈和队列的模拟

阅读更多
  第一次写东西,刚自己练练手模拟了下堆栈和队列的的类,希望能给自己一点点激励。以后希望自己能多写点JAVA和JAVASCRIPT的东西在这上面,也是希望能和大家多多交流,互相进步。
  堆栈:
    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 this.item==null&&this.next==null;}
	}
	private Node<T> top=new Node<T>();
	/*
	 * 放进元素
	 */
	public void push(T item){
	  top=new Node(item,top);
	}
	/*
	 * 取出元素
	 */
	public T pop(){
		T item=top.item;
		if(!top.end()){
			top=top.next;
		}
		return item;
	}
}

队列:
public class MyQueue<T>{
	private static class Node <U>{
		U item;
		Node<U> previous;
		Node(){
			this.item=null;
			this.previous=null;
		}
		Node(U item,Node<U> previous){
			this.item=item;
			this.previous=previous;
		}
	
		
		boolean end(){return this.previous==null;}
	}
	private Node<T> bottom=new Node<T>();
	private int length=0;
          /*
	 * 放进元素
	 */
	public void push(T item){
		if(length==0){
			this.bottom.item=item;
			length++;
		}else{
			Node<T> node =new Node<T>(item, null);
			Node<T> top=this.bottom.previous;
			if(top==null){
				this.bottom.previous=node;
			}else{
			Node<T> next=null;	
			while(top!=null){
				next=top;
				top=top.previous;
			}
			next.previous=node;
		 }
		}
	}
          /*
	 * 取出元素
	 */
	public T pop(){
	T item=bottom.item;
	if(!bottom.end()){
		this.bottom=bottom.previous;
	}
	return item;
 }
}
分享到:
评论
2 楼 jingwuyuan 2009-07-20  
这样设计比较合理,用内部类存放节点信息
1 楼 yw404109794 2009-07-16  
都是学习。。 你咋就不能写得通俗点呢。。。本来就搞不懂。。还加个内部类。。你是故意把别人搞晕吧。。。

相关推荐

    JAVA 模拟队列的实现

    这是一篇使用java模拟队列实现的程序的课程设计,包含了队列界面的设计以及队列数据结构的模拟实现,是java学习的很好的参照,另外,包含了部分的源代码,具体源代码在其它文件夹。

    使用LinkedList模拟堆栈

    使用LinkedList模拟堆栈操作,包括进栈、出栈,入队、出队

    java 停车厂模拟管理程序的设计与实现

    在这里假设汽车不能从便道上开走,试设计这样一个停车厂模拟管理程序。 [概要设计] 1.定义Stack接口 2.设计停车场堆栈ParkStack 3.定义Queue接口 4.设计等待队列WaitQueue 5.定义结点类Node 6.搭建管理界面

    栈——经典面试题

    题目:两个栈模拟一个队列,剑指offer书中的题目,用java写的

    JavaSE:Java通用培训

    JavaSE Java通用培训 使用Java-I的OOP 第一天 算法,Java安装和体系结构 第二天 关键字,变量,运算符,数据...堆栈,队列,泛型,集合框架-ArrayList,LinkedList 第三天 集合框架-集合,哈希图 第四天 队列,双

    java洗车行源码-CSC-103-Lab4:跑道模拟器

    java洗车行源码CSC-103-Lab4 跑道模拟器 CSC103 秋季 2013 萨拉韦克斯勒 作业 #4 此作业由一组两人完成 • ...页中描述的洗车模拟提供了一个模型,您的程序将以此模型为...书中的堆栈类:LinkedStack.java 书中的节点类:

    War:纸牌游戏模拟战争

    我不了解堆栈/队列,但最终对堆栈进行了反向工程。 我对大规模的游戏计算机仿真产生了兴趣,因此我发现用Java编写代码很有趣。 在对基本游戏进行编码之后,我添加了原始游戏中不存在的变体,以探索各种不同的策略。...

    javalruleetcode-interview-prepartion:面试准备

    用堆栈模拟计算器 为什么列表、堆栈泛型不能是原始类型? ? ? 队列 java的哪个实现用得最多??? 检测周期 链表 有根的树 堆 优先队列 堆排序 第 K 个元素 图形 图表示 邻接表 邻接矩阵 一个矩阵(一个数组) ...

    CS150:CS150 的项目

    本课程向我介绍了数据结构,包括列表、二叉树、红黑树、2-3 树、堆、图、堆栈和队列。 我学习了各种算法,包括插入排序、选择排序、归并排序、快速排序和 Dijkstra 的寻路算法。 我学习了分析时间和空间复杂性的基础...

    JavaScript基础和实例代码

    6.3.3 模拟堆栈和队列操作的方法 6.3.4 使用splice()方法添加和删除数组元素 6.3.5 修改length属性更改数组 6.3.6 调用Array对象的方法生成字符串 6.3.7 连接两个数组 6.3.8 常见属性和方法汇总 6.4 Date对象 6.4.1 ...

    源文件程序天下JAVASCRIPT实例自学手册

    6.3.3 模拟堆栈和队列操作的方法 6.3.4 使用splice()方法添加和删除数组元素 6.3.5 修改length属性更改数组 6.3.6 调用Array对象的方法生成字符串 6.3.7 连接两个数组 6.3.8 常见属性和方法汇总 6.4 Date对象 6.4.1 ...

    Data_Analysis_Simulation:菜单驱动的Web浏览器模拟,可跟踪每个会话的用户统计信息

    数据分析模拟 具有以下选项的菜单驱动程序: ... 2-登录 3-访问网站 4-按时间顺序检查访问的网站的浏览历史记录 ...必须使用至少一个堆栈,一个队列,一个2D数组,用于分隔工作的方法(主方法不应包含超过20行的代码)。

    C++大学教程,一本适合初学者的入门教材(part2)

    7.11 有关对象的思考:在电梯模拟程序中使用复合和动态对象管理 小结 术语 自测练习 自测练习答案 练习 第8章 运算符重载 8.1 简介 8.2 运算符重载的基础 8.3 运算符重载的限制 8.4 用作类成员与友元函数的...

    C++大学教程,一本适合初学者的入门教材(part1)

    7.11 有关对象的思考:在电梯模拟程序中使用复合和动态对象管理 小结 术语 自测练习 自测练习答案 练习 第8章 运算符重载 8.1 简介 8.2 运算符重载的基础 8.3 运算符重载的限制 8.4 用作类成员与友元函数的...

    如何学习ACM,看后受益匪浅

    掌握队列、堆栈和图的基本表达与操作是必需的,至于树,我个人觉得需要建树的问题有但是并不多。(但是树往往是很重要的分析工具)除此之外,排序和查找并不需要对所有方式都能很熟练的掌握,但你必须保证自己对于...

    C++大学教程

    1.9 Java、Internet与万维网--------------------------------------------7 1.10 其它高级语言------------------------------------------------------8 1.11 结构化编程-----------------------------------...

Global site tag (gtag.js) - Google Analytics