第一次写东西,刚自己练练手模拟了下堆栈和队列的的类,希望能给自己一点点激励。以后希望自己能多写点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;
}
}
分享到:
相关推荐
本课程设计旨在通过模拟队列的实现,帮助学习者深入理解Java编程以及队列数据结构的运作原理。 队列作为一种线性数据结构,遵循“先进先出”(FIFO)原则,即最早插入的元素最先被移除,而最近插入的元素则在队尾等待...
在JavaScript中,没有原生的堆栈或队列实现,但我们可以使用数组或者通过JavaScript的原型链来简单地模拟这些数据结构的行为。其他编程语言,如C++、Python等,也都提供了对堆栈和队列操作的支持。 此外,堆栈和...
在计算机科学中,堆栈和队列是两种基础的数据结构,它们在算法和程序设计中扮演着重要角色。本文将详细讲解如何使用Java中的LinkedList类来模拟这两种数据结构,并实现其基本操作。 堆栈(Stack)是一种后进先出...
在"banco:java堆栈和队列的示例代码"这个项目中,我们可以期待看到如何在实际场景中应用这些概念。"banco"这个名字可能暗示了这是一个模拟银行系统或交易处理的应用,其中堆栈和队列可能会用于管理事务的执行顺序...
本示例主要关注两种基本的数据结构:堆栈(Stack)和队列(Queue),并使用Java中的LinkedList类来模拟这两种数据结构。LinkedList是Java集合框架中的一种双向链表,它允许在列表的任何位置进行插入和删除操作,这...
在这里假设汽车不能从便道上开走,试设计这样一个停车厂模拟管理程序。 [概要设计] 1.定义Stack接口 2.设计停车场堆栈ParkStack 3.定义Queue接口 4.设计等待队列WaitQueue 5.定义结点类Node 6.搭建管理界面
动态堆栈和队列是根据需要自动调整大小的数据结构。与固定大小的数组不同,这些数据结构可以灵活地增长或收缩,适应数据的变化。 6. **双链表(DLL)**: 双链表在每个节点中包含两个引用,分别指向前一个和后一...
- **数据结构的实现**:如何有效地创建和操作链表、堆栈或队列。 - **时间同步**:模拟可能需要一个时间模型来决定何时触发下一个事件,例如通过随机数生成器模拟客户到达的间隔时间。 - **错误处理**:确保程序能够...
栈和队列是数据结构中的基础概念,它们在编程中有着广泛的应用,特别是在Java面试中常常被用来测试候选人的算法和数据结构理解能力。下面我们将详细探讨这些知识点。 1. **栈的创建**: 栈是一种后进先出(LIFO)...
Java实现的计算器是一个基于编程语言Java的项目,它利用了数据结构中的队列和堆栈概念,以及Java自带的图形用户界面(GUI)来构建一个交互式的计算工具。在这个计算器中,用户可以通过图形界面输入数学表达式,程序...
在某些场景下,我们可能需要使用栈来模拟队列的行为。这个问题——“如何使用两个堆栈实现队列?”是一个常见的编程面试题,旨在测试候选人的思维灵活性和对数据结构的理解。 要使用两个堆栈来实现队列,我们可以...
那么,如何利用两个堆栈模拟队列呢?我们可以将一个堆栈作为“输入堆栈”(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来保存...
它们涉及到数据结构(如堆栈和队列)来管理牌堆,以及算法(如搜索和决策树)来处理游戏逻辑。 3. **6270原装贪吃蛇**:贪吃蛇游戏是经典的2D游戏,通过控制蛇的移动来吃食物并增长。这涉及到键盘输入处理、二维...
总之,这个项目为学习数据结构的学生提供了一个实用的工具,通过动画模拟帮助他们掌握堆栈、队列以及特殊视图的概念,同时也展示了如何使用Java的Swing和AWT来创建交互式的GUI应用。通过实际操作,学习者不仅可以...
5. **数据结构**:为了存储和管理楼层、按钮以及乘客请求,可以使用数组、链表、队列或堆栈等数据结构。例如,可以用队列来保存待处理的电梯请求,用数组来表示楼层。 6. **同步机制**:在多线程环境下,确保电梯的...
智能停车场管理系统的核心在于自动化和信息化,通过运用Java语言,结合数据结构中的堆栈和队列原理,实现车辆进出的自动化导航、计时收费以及历史记录查询等功能。堆栈和队列是计算机科学中的基础数据结构,它们能够...
- **使用Java进行模拟**:Java提供了丰富的并发和多线程API,如`Thread`、`Runnable`接口、`ExecutorService`和`Future`等,可以用来构建进程调度模型。 - **模拟数据结构**:可能使用`ArrayList`、`LinkedList`或...