2022-11-30 10:36:02
浏览数 (1)
今天介绍一下数据结构中的链式队列,和线性队列相同的是它也有队头(front),和队尾(rear)。
规则和线性队列相同也是先进先出(FIFO),队尾进,队头出。
下面看具体的链式队列的具体实现案例:
代码语言:javascript
复制package queue;
/**
* @ClassName: CirQueue
* @Description: 链式队列
* @date 2016年6月3日 下午19:55
* @param 无
*/
public class LinkQueue {
private class Node{//节点类
private Object data;
private Node next;
public Node(){
data=null;
next=null;
}
public Node(Object data,Node next){
this.data=data;
this.next=next;
}
}
//队未
private Node rear;
//队头
private Node front;
//队列长度
private int size=0;
public LinkQueue(){//初始化数据
Node node=new Node();
front=rear=node;
}
/**
* 将一个对象追加到队列尾部
* @param value
* @autho lzq
*/
public void enQueue(Object value){
Node node=new Node(value,null);
rear.next=node;
rear=node;
size ;
}
/**
* 队列头部出队
* @return 返回出列的队头元素
* @author 林志强
*/
public Object deQueue(){
if(rear==front){
return null;
}else{
Node temp=front.next;
front.next=temp.next;
if(temp.next==null){
front=rear;
}
size--;
return temp.data;
}
}
/**
* 队列长度
* @return int型的数据
* @author 林志强
*/
public int size(){
return size;
}
/**
* 判断是否为空
* @return int型的数据
* @author 林志强
*/
public boolean isEmpty(){
return rear==front;
}
/**
* 获取队头元素但是不出队
* @return 返回队头元素
* @author 林志强
*/
public Object getQueue(){
return front.next.data;
}
/**
* 打印队列中数据
* @author 林志强
*/
public void disPlay(){
Node temp=front.next;
while(temp!=null){
System.out.print(temp.data "t");
temp=temp.next;
}
System.out.println();
}
public static void main(String[] args) {
LinkQueue l=new LinkQueue();
System.out.println(l.size());
System.out.println(l.isEmpty());
for(int i=0;i<5;i ){
l.enQueue(i);
}
l.disPlay();
System.out.println(l.deQueue());
System.out.println(l.deQueue());
System.out.println(l.deQueue());
l.disPlay();
// System.out.println(l.getQueue());
}
}