用链表也可以实现队列,在用链表实现的队列在插入和删除的时候更方便,但查找起来更困难
用链表实现队列的代码如下:
第一个类:LinkNode
/**
* 定义一个单向链表节点类LinkNode
* @author zhx
*
*/
public class LinkNode{
Object data;//节点存储的数据
LinkNode next;//指向下一个节点的指针
//创建节点时什么也不传入
public LinkNode(){
this.data=null;
this.next=null;
}
//创建节点时只传入节点存储的数据
public LinkNode(Object data){
this.data=data;
this.next=null;
}
//创建节点时传入节点内存储的数据和下一个指针
public LinkNode(Object data, LinkNode next){
this.data=data;
this.next=next;
}
}
第二个类:LinkList
/**
* 单向链表
* @author zhx
*
*/
public class LinkList{
private LinkNode front;//定义一个头节点
private LinkNode rear;//定义一个尾节点
Object obj;
/**
* 定义从队尾插入队列的方法
*/
public void enqueue(){
if(rear==null&&front==null){
rear = new LinkNode(obj);
front=rear;
}
else{
LinkNode node = new LinkNode(obj);
rear.next=node;//将新插入的元素加到原队尾的后一位
rear=rear.next;//将目前的node(即原来队尾的后一位)设为队尾
}
}
/**
* 定义从队首删除元素的方法
*/
public LinkNode dequeue(){
//如果队列为空
if(rear==null&&front==null){
System.out.println("队列为空,删除失败");
return null;
}
//如果队列只剩下一个元素
if(front==rear&&rear!= null){
LinkNode node = front;
rear=null;
front=null;
return node;
}
LinkNode ob = front;
front=front.next;
return ob;
}
}
分享到:
相关推荐
利用数组和链表实现队列的基本操作,如入队,出队,读出队首元素
用循环链表实现队列操作 讲解详细 通过多次编译 可以运行的
链表 链表_使用Python基于链表实现队列数据结构
用链表实现队列
用链表实现队列
链表队列的实现 链表队列的具体增删改查实现 是一种单链表实现
这是一个双链表去实现队列的列子,里面用到了指针的东西, 还有NODE的东西
* 基于双向链表实现双端队列结构 */ package dsa; public class Deque_DLNode implements Deque { protected DLNode header;//指向头节点(哨兵) protected DLNode trailer;//指向尾节点(哨兵) protected ...
本程序是用链表作为基类,队列类、栈类作为派生类,使用了虚函数,和对象指针
定义了一个队列的类,包括建立队、入队、出队、打印队列、访问队首队尾的成员函数。
c++链表队列的实现,c++链表队列的实现,c++链表队列的实现,c++链表队列的实现,c++链表队列的实现,c++链表队列的实现
用链表实现栈和队列的操作,使链表操作更加成熟,熟练栈和队列的机制
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,只允许在表的后端(rear)进行插入操作,下面介绍一下java使用数组和链表实现队列的示例
主要介绍了java链表应用--基于链表实现队列,结合实例形式分析了java基于链表实现队列尾指针相关操作使用技巧,需要的朋友可以参考下
主要介绍了C#通过链表实现队列的方法,涉及C#操作链表的相关技巧,需要的朋友可以参考下
数据结构 基于链表实现的优先队列 Cpp文件
第二,大家在很多书上看到的是使用单链表实现队列,我这里将会使用带头结点尾结点的非循环双链表实现,虽然多维护了两个节点和指针域,但是在链表头尾进行插入删除的时候不需要遍历链表了,队列操作变得非常
使用链表实现的队列 对应于数据机构与算法分析(c++版)第三版或第二版 Clifford A.Shaffer 重庆大学使用教材