`
jingwuyuan
  • 浏览: 9118 次
  • 性别: 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编程以及队列数据结构的运作原理。 队列作为一种线性数据结构,遵循“先进先出”(FIFO)原则,即最早插入的元素最先被移除,而最近插入的元素则在队尾等待...

    06-堆栈、队列.pdf

    在JavaScript中,没有原生的堆栈或队列实现,但我们可以使用数组或者通过JavaScript的原型链来简单地模拟这些数据结构的行为。其他编程语言,如C++、Python等,也都提供了对堆栈和队列操作的支持。 此外,堆栈和...

    使用LinkedList模拟堆栈

    在计算机科学中,堆栈和队列是两种基础的数据结构,它们在算法和程序设计中扮演着重要角色。本文将详细讲解如何使用Java中的LinkedList类来模拟这两种数据结构,并实现其基本操作。 堆栈(Stack)是一种后进先出...

    banco:java堆栈和队列的示例代码

    在"banco:java堆栈和队列的示例代码"这个项目中,我们可以期待看到如何在实际场景中应用这些概念。"banco"这个名字可能暗示了这是一个模拟银行系统或交易处理的应用,其中堆栈和队列可能会用于管理事务的执行顺序...

    LinkedList学习示例模拟堆栈与队列数据结构

    本示例主要关注两种基本的数据结构:堆栈(Stack)和队列(Queue),并使用Java中的LinkedList类来模拟这两种数据结构。LinkedList是Java集合框架中的一种双向链表,它允许在列表的任何位置进行插入和删除操作,这...

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

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

    Java数据结构:对象数组,数组堆栈,数组队列,SLL,动态堆栈和队列,DLL,BST,对象的BST,顺序文件,流,直接访问文件(随机访问文件)

    动态堆栈和队列是根据需要自动调整大小的数据结构。与固定大小的数组不同,这些数据结构可以灵活地增长或收缩,适应数据的变化。 6. **双链表(DLL)**: 双链表在每个节点中包含两个引用,分别指向前一个和后一...

    银行业务模拟 试验报告及代码分析

    - **数据结构的实现**:如何有效地创建和操作链表、堆栈或队列。 - **时间同步**:模拟可能需要一个时间模型来决定何时触发下一个事件,例如通过随机数生成器模拟客户到达的间隔时间。 - **错误处理**:确保程序能够...

    Java实现栈和队列面试题

    栈和队列是数据结构中的基础概念,它们在编程中有着广泛的应用,特别是在Java面试中常常被用来测试候选人的算法和数据结构理解能力。下面我们将详细探讨这些知识点。 1. **栈的创建**: 栈是一种后进先出(LIFO)...

    java实现的计算器

    Java实现的计算器是一个基于编程语言Java的项目,它利用了数据结构中的队列和堆栈概念,以及Java自带的图形用户界面(GUI)来构建一个交互式的计算工具。在这个计算器中,用户可以通过图形界面输入数学表达式,程序...

    queuefromtwostacks:如何使用 2 个堆栈实现队列?

    在某些场景下,我们可能需要使用栈来模拟队列的行为。这个问题——“如何使用两个堆栈实现队列?”是一个常见的编程面试题,旨在测试候选人的思维灵活性和对数据结构的理解。 要使用两个堆栈来实现队列,我们可以...

    Queue-from-two-stacks-:使用两个堆栈实现队列的有趣练习

    那么,如何利用两个堆栈模拟队列呢?我们可以将一个堆栈作为“输入堆栈”(push stack),用于存放新入队的元素,另一个堆栈作为“输出堆栈”(pop stack),用于出队操作。具体实现步骤如下: 1. **入队(enqueue...

    栈——经典面试题

    在IT领域,栈和队列是两种基础但至关重要的数据结构。栈被称为“后进先出”(LIFO,Last In First Out)的数据结构,而队列则被称为“先进先出”(FIFO,First In First Out)。在面试中,对这两种数据结构的理解和...

    栈和队列算法总集

    在实际编程中,许多编程语言提供了内置的栈和队列实现,如Python的`collections.deque`,Java的`java.util.Stack`和`java.util.Queue`接口,C++的`std::stack`和`std::queue`等。了解并熟练运用这些内置数据结构能...

    火车厢重排 单步演示

    可以使用Java的内置LinkedList类作为底层数据结构,因为它支持O(1)时间复杂度的addFirst()(相当于push)和removeFirst()(相当于pop)操作。此外,还需要一个变量来跟踪目标顺序中的下一个车厢,以及一个List来保存...

    Java 45款 游戏源代码

    它们涉及到数据结构(如堆栈和队列)来管理牌堆,以及算法(如搜索和决策树)来处理游戏逻辑。 3. **6270原装贪吃蛇**:贪吃蛇游戏是经典的2D游戏,通过控制蛇的移动来吃食物并增长。这涉及到键盘输入处理、二维...

    Data-Structure:堆栈,队列和圆形视图的动画工作,供学习数据结构的学生使用。 这些程序由Rahul Lokhande和Suhel Zende在Ubuntu操作系统上共同开发。 这些程序是使用Swing组件,JFrame,AWT组件和一些swing组件开发的。 我们使用线程进行动画制作。 要执行它,请分别执行每个文件

    总之,这个项目为学习数据结构的学生提供了一个实用的工具,通过动画模拟帮助他们掌握堆栈、队列以及特殊视图的概念,同时也展示了如何使用Java的Swing和AWT来创建交互式的GUI应用。通过实际操作,学习者不仅可以...

    一个电梯模拟程序,模拟电梯的运行状况!包括楼层、按钮等Java.zip

    5. **数据结构**:为了存储和管理楼层、按钮以及乘客请求,可以使用数组、链表、队列或堆栈等数据结构。例如,可以用队列来保存待处理的电梯请求,用数组来表示楼层。 6. **同步机制**:在多线程环境下,确保电梯的...

    基于Java的智能停车场管理系统的开发与研究.pdf

    智能停车场管理系统的核心在于自动化和信息化,通过运用Java语言,结合数据结构中的堆栈和队列原理,实现车辆进出的自动化导航、计时收费以及历史记录查询等功能。堆栈和队列是计算机科学中的基础数据结构,它们能够...

    java版的操作系统进程调度模拟.zip

    - **使用Java进行模拟**:Java提供了丰富的并发和多线程API,如`Thread`、`Runnable`接口、`ExecutorService`和`Future`等,可以用来构建进程调度模型。 - **模拟数据结构**:可能使用`ArrayList`、`LinkedList`或...

Global site tag (gtag.js) - Google Analytics