package Queue;
import java.io.*;
class Linked_List_Queue {
public QueueNode front;
public QueueNode rear;
public Linked_List_Queue() {
front=null;
rear=null;
}
//方法enqueue:队列数据的存入
public boolean enqueue(int value) {
QueueNode node=new QueueNode(value);
if(rear==null)
front=node;
else
rear.next=node;
rear=node;
return true;
}
//方法dequeue:队列数据的取出
public int dequeue(int action) {
int value;
QueueNode tempNode,startNode;
if(!(front==null)&&action==1) {
if(front==rear) rear=null;
value=front.data;
front=front.next;
return value;
}else if(!(rear==null)&&action==2) {
startNode=front;
value=rear.data;
tempNode=front;
while(front.next!=rear&&front.next!=null) {
front=front.next;tempNode=front;
front=startNode;
rear=tempNode;
}
if((front.next==null)||(rear.next==null)) {
front=null;
rear=null;
}
return value;
}else return -1;
}
}
public class DoubleendsQueue {
public static void main(String args[]) throws IOException{
Linked_List_Queue queue=new Linked_List_Queue();
int temp;
int num1=-1;
System.out.println("用链表实现双向队列");
for(int i=1;i<6;i++) {
num1+=2;
System.out.println("在双向队列前端加入第"+i+"个数据,此数据值为"+num1);
queue.enqueue(num1);
}
for(int i=1;i<6;i++) {
int num2=1;
if(num2==1) {
temp=queue.dequeue(num2);
System.out.println("从双向队列前端按序取出的数据值为:"+temp);
}
if(num2==2) {
temp=queue.dequeue(num2);
System.out.println("从双向队列后端按序取出的数据值为:"+temp);
num2--;
}
num2++;
}
}
}
Java实现双向队列
最新推荐文章于 2024-06-16 13:45:00 发布