队列的顺序实现
【摘要】
import java.util.*;
public class Main {
public Queue InitQueue() {
Queue queue=new Queue(new int...
import java.util.*;
public class Main {
public Queue InitQueue() {
Queue queue=new Queue(new int[10]);
queue.front=0;
queue.rear=queue.data.length-1;//good不然会存在最后一位为空就显示栈满
return queue;
}
public Queue EnQueue(Queue queue,int n) {
//这个判断是为了出现有出队现象导致再有数据入队时rear取余后从0下标开始
if(queue.len>=queue.data.length) {
System.out.println("该队列已满!!!");
}else {
queue.rear=(queue.rear+1)%queue.data.length;//循环数列也是自己说的雨伞法
queue.data[queue.rear]=n;
queue.len++;
}
return queue;
}
public Queue Dequeue(Queue queue) {
if(queue.len==0) {
System.out.println("该队列以空!!!");
return queue;
}
System.out.println("队首元素"+queue.data[queue.front]+"以出队列。");
queue.front--;
queue.len--;
return queue;
}
public boolean isFull(Queue queue) {
if(queue.len==queue.data.length) {
System.out.println("已满!!");
return false;
}
else if(queue.len<queue.data.length) {
System.out.println("未满!");
return true;
}
return false;
}
public static void main(String[] args) {
Main queue=new Main();
Queue q=queue.InitQueue();
for(int i=0;i<10;i++) {
queue.EnQueue(q, i+1);
queue.isFull(q);
}
queue.EnQueue(q, 100);
System.out.println("尾指针地址"+q.rear);
queue.Dequeue(q);
queue.EnQueue(q, 100);
System.out.println("尾指针地址"+q.rear);//证明该队列是循环的
}
}
class Queue{
int data[];
int front,rear;
int len=0;
public Queue() {
}
public Queue(int data[]) {
this.data=data;
}
}
文章来源: blog.csdn.net,作者:肥学,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jiahuiandxuehui/article/details/123339837
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)