下面是使用双向链表实现了队列的进出和栈的push和pop操作
首先是依然是给出双向链表节点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;
}
}
分享到:
相关推荐
数据结构各种算法实现,有示例程序。 包括顺序表 单链表 双向链表 循环链表 顺序栈 链式栈 顺序队列 链式队列 串 二叉树 线索二叉树 堆 哈夫曼树 B+树 图 排序算法
这是使用双向链表的队列和堆栈的实现。 双向链表类可以单独使用。
这里有顺序变,链表,栈,队列的实现的完整程序,程序附加有大量说明,链表中还包含循环链表,双向链表,同时又串,图的程序。
用队列和栈判断回文——实验报告+C语言代码 赫夫曼数——实验报告+C语言代码 双向链表——实验报告+C语言代码 内部排序(8种)——实验报告+C语言代码
我自己用visual studio 2008 写的,我觉得写的挺成功的,既用到了数据结构又用到了派生.希望大家共同分享!
本文实例讲述了Python编程实现双链表,栈,队列及二叉树的方法。分享给大家供大家参考,具体如下: 1.双链表 class Node(object): def __init__(self, value=None): self._prev = None self.data = value self....
此程序不仅可以使学生明白派生及继承的关系,还可以复习关于数据结构的好多知识,挺好的
KMP,中缀转后缀,后缀表达式计算,最短路径,队列,栈,哈弗曼,双向链表
C语言实现数据结构:单链表,循环链表,双向链表;静态顺序队列,动态顺序队列,链式队列;静态顺序栈,动态顺序栈,链式栈;二叉树,线索二叉树;排序算
c语言数组指定位置插入和删除-玩转C语言链表,单链表双向链表的建立遍历插入删除... 数组和链表.pdf
顺序表、链表、栈、队列、树、Hashmap等数据结构;排序、二分法查找、树遍历等常见算法实现python语言...双向链表 单向循环链表 栈 队列 FIFO队列 LIFO队列 优先队列(Priority Queue) 双端队列(double-ended queue)
代码较多,尤其是队列的链式存储方式的实现,建议先学习我前面上传的双向链表实现内容,再看本章队列的链式存储实现。上传所有代码每一行都有注释,方便大家阅读。 两种实现方法函数在一个头文件中,顺序存储方式的...
已经设置了粉丝可下载。 本人手写的双向链表模版,包含从头,尾,顺序插入,链表排序,以及通过链表模版派生的链式队列和链式栈,希望能对您的学习有帮助。
java 算法:包括数组,哈希表,队列,栈,链表(双端,单向,双向),二叉树(普通二叉树,哈夫曼树,二叉查找树,平衡二叉树,二叉线索树),图这些数据结构的实现以及多种排序算法和其他一些算法的实现(递归,二...
09插入排序 10快速排序 11归并排序 12顺序栈 13顺序队列 14链表的基本概率 15链表 16链表的迭代器 17循环链表 18双项链表 19链式栈 20链式队列 21STL_list类 22基数排序 23属 24二叉树 25二叉树找数 26红黑树 27...
用双向链表完成队列、栈的有关操作 LinkedList、LinkedQueue、LinkedStack
利用C++实现以下经典数据结构与算法:线性表(顺序表、链表、静态链表、三元组)、栈(双栈、共享栈)、队列(任务调度、循环队列、双向队列、链队列)、数组(特殊矩阵、稀疏矩阵压缩)、串(朴素模式匹配、KMP算法...