使用双向链表实现队列和栈
2013-04-26 07:59
309 查看
下面是使用双向链表实现了队列的进出和栈的push和pop操作
首先是依然是给出双向链表节点NodeType
下面给出了队列的相关操作
下面实现对栈的相关操作,比较简单
首先是依然是给出双向链表节点NodeType
public class NodeType { public NodeType llink; public int data; public NodeType rlink; public NodeType(int data){ this.data = data; } public NodeType(){ } }
下面给出了队列的相关操作
public class doubleLinkedListQueue { /** * @author Neway * @function 使用双向链表实现进队和队 */ public static NodeType front; public static NodeType rear; public static void equeue(NodeType node){ if(front == null){ //当有元素一次进入队列的时候,那么它是队首的元素 front = node; } if(rear == null){ rear = node; } node.rlink = rear; //将新入队的元素node指向原来的尾部元素 rear.llink = node; //原来尾部元素成为了新入队元素node的后一个节点 rear = node; //更新原队列的尾部元素为新入队的元素 } public static NodeType dequeue(){ NodeType temp = null; if(front == null){ System.out.println("the equeue is empty!"); return null; } temp = front; front = front.llink; System.out.println(temp.data); return temp; } public static void main(String args[]){ NodeType head = new NodeType(12); NodeType a = new NodeType(55); NodeType b = new NodeType(64); NodeType c = new NodeType(78); NodeType d = new NodeType(85); NodeType e = new NodeType(98); NodeType f = new NodeType(112); equeue(head); equeue(a); equeue(b); equeue(c); equeue(d); dequeue(); dequeue(); dequeue(); dequeue(); dequeue(); dequeue(); } }
下面实现对栈的相关操作,比较简单
public class doubleLinkedListStack { public NodeType top = null; public void pushStack(NodeType newNode){ newNode.rlink = top; top = newNode; } public NodeType popStack(){ NodeType node = null; if(top == null){ System.out.println("Stack is empty!"); return null; } node = top; top = top.rlink; return node; } }
相关文章推荐
- 使用带sentinel哨兵的双向链表实现栈和队列
- 数据结构(Data structure):使用双向链表实现队列(C语言)
- 使用双向链表实现双端队列
- C语言使用非循环双向链表实现队列
- 使用堆栈(Stack)来模拟队列(FIFO)功能,要求数据必须存储在堆栈内部.需要实现enqueue(入栈),dequeue(出栈),isEmpty(判空)三个功能,并给出单元测试.
- 使用memcache和redis实现队列
- 浅谈使用java实现阿里云消息队列简单封装
- linxu中使用completion实现等待队列
- 什么是阻塞队列?如何使用阻塞队列来实现生产者-消费者模型?
- 双向链表实现队列
- 算法导论 使用两个队列实现一个栈
- 使用两个队列实现一个栈
- 使用两个栈实现一个队列
- 基于双向链表实现无锁队列的正确姿势(修正之前博客中的错误)
- 使用消息队列实现分布式事物---公认较为理想的分布式事物解决方案
- C++11 使用 unique_lock,lock_guard,condition_variable, lambda表达式实现线程安全队列
- 使用带有头尾节点的单链表实现队列
- 关于redis中使用锁机制,( 实现分布式锁和任务队列)
- Java中使用LinkedList实现栈与队列
- 循环队列拾遗-使用数组实现循环队列