循环队列java

import java.lang.*;


public class queue{
public static void main(String args[]){
sq_queue sq = new sq_queue(10); //实例化循环队列
for(int i = 1; i < 10; i++){ //入队一些数据
sq.ins_queue(i);
}
sq.print_queue();
sq.del_queue();
sq.del_queue();
sq.del_queue();
sq.print_queue();
sq.ins_queue(10);
sq.ins_queue(20);
sq.ins_queue(30);
sq.ins_queue(40);
sq.print_queue();
sq.del_queue();
sq.del_queue();
sq.del_queue();
sq.del_queue();
sq.del_queue();
sq.del_queue();
sq.del_queue();
sq.del_queue();
sq.del_queue();
sq.del_queue();
sq.print_queue();
}
}
//循环队列类
class sq_queue{
private int front; //头指针
private int rear; //尾指针
private boolean flag; //头指针=尾指针不一定说明队列满,还可能是空
private int queue[]; //头指针
private int m; //头指针
//构造函数,初始化队列
public sq_queue(int m){
this.m = m;
front = 0;
rear = 0;
queue = new int[m];
flag = false;
}
//入队
public void ins_queue(int num){
if(flag && front == rear){ //判断队列是否为满
System.out.println("队列已满。。。");
return;
}
rear++; //尾指针加一
queue[rear - 1] = num; //在尾指针前面插入入队数
System.out.println("front="+front+",rear="+rear + ",入队元素为:" + num);
if(rear == m){ //判断是否达到数组的最后,是的话,尾指针连接到首位
rear = 0;
}
flag = true; //队列非空
}
//出队
public void del_queue(){
if(!flag && front == rear){ //判断队列是否为空
System.out.println("队列为空。。。");
return;
}
front++; //头指针加一,指向新的头元素
System.out.println("front="+front+",rear="+rear + ",出队元素为:" + queue[front - 1]);
if(front == m){ //判断是否达到数组的最后,是的话,头指针连接到首位
front = 0;
}
if(front == rear){ //头指针追上尾指针的时候说明数组为空了
flag = false;
}
}
//打印队列
public void print_queue(){
if(!flag && front == rear){ //判断队列是否为空,因为本例子没有删除队列中的元素,只是靠头尾指针操作,所以要判断
System.out.println("队列为空。。。");
return;
}
int i = front;
do{ //当队列为满的时候,front = rear,所以要先打印一个,否则无法输出,不能使用while循环
System.out.println("front:" + front + ",rear:" + rear + ",elemrnt=" +queue[i] + " ");
i++;
if(i == m){
i = 0;
}
}while(i != rear);
System.out.println();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值