目录
一、循环队列
1.代码
含初始化、入队列、出队列、求队列长度、打印队列
//循环队列的基本操作
public class queue {
public int base[];
public int front;
public int rear;
public int data;
public int maxsize=6;
public queue() {
this(10);
}
public queue(int maxsize) {//队列初始化
base = new int[maxsize];
front = 0;
rear = 0;
}
public boolean queueEmpty() {//判断队列是否为空
if(front==rear) {
return true;
}else{
return false;
}
}
public boolean queueFull() {//判断队列是否满
if((rear+1)%maxsize==front) {
return true;
}else {
return false;
}
}
public void EnQueue(int data) {//循环入队列
if((rear+1)%maxsize==front) {//当队列满时
return;
}
base[rear]=data;
rear = (rear+1)%maxsize;//队尾指针加一
}
public void DeQueue() {//先进先出,循环出队列
if(front==rear) {//如果队列空
return;
}
front = (front+1)%maxsize;//队头指针加一
}
public void showQueue() {//打印队列
for(int i=front;i<rear;i++) {
System.out.print(base[i]+" ");
}
}
public int lenQueue() {//返回队列长度
int length = (rear-front+maxsize)%maxsize;
return length;
}
public static void main(String[] args) {
queue q = new queue();
q.EnQueue(1);
q.EnQueue(2);
q.EnQueue(3);
q.EnQueue(4);
q.EnQueue(5);
System.out.print("初始队列:");
q.showQueue();
System.out.println("\t");
System.out.print("元素循环出去后的队列:");
q.DeQueue();
q.showQueue();
System.out.println("\t");
System.out.print("队列长度为:"+q.lenQueue());
}
}
2.实现截图
二、链队
1.代码
包含初始化、入队、出队
//链队的基本操作
public class queueNode {
public int data;
public queueNode next=null;
public queueNode front;
public queueNode rear;
public queueNode() {}
public queueNode(int data) {
this.data = data;
}
public void queueAdd(int data) {//入队列
queueNode node = new queueNode(data);
if(front==null) {//如果队列为空
front = node;
rear = node;
return;
}
rear.next = node;
rear = node;
}
public void Dequeue() {//出队列
while(front!=null) {//当队列不为空时
front = front.next;
break;
}
}
public void printNode() {//打印队列
queueNode temp = front;
while(temp.next!=null) {
System.out.print(temp.data+" ");
temp = temp.next;
}
System.out.print(temp.data);
}
public static void main(String[] args) {
queueNode qn = new queueNode();
qn.queueAdd(1);
qn.queueAdd(2);
qn.queueAdd(3);
qn.queueAdd(4);
qn.queueAdd(5);
System.out.print("初始队列:");
qn.printNode();
System.out.println("\t");
System.out.print("元素先进先出后的队列:");
qn.Dequeue();
qn.printNode();
}
}