java数据结构之队列的入队和出队
Java  /  管理员 发布于 8年前   295
用java实现队列的入队出队
首先要定义几个变量与数组:
a:表示队列的数组 (推荐学习:java课程)
rear:表示队列尾,这里初始化为0
(入队一个元素下标就往后移动一位)
front:表示队列头,同样初始化为0
(出队一个元素下标就往后移动一位)
maxsize:最大下标,这里初始化为4,但是队列只能存放3个。(队列的长度加一)
这里数组预留出的一个位置用来判断队列的空或满。
参考下面的图方便理解:
此时元素个数为3已经是满了的,因为数组个数是有效的元素个数加一。
注:元素下标只能为0——3
代码如下:
//数据结构——队列import java.util.Scanner;public class Queue {int[] a ;int rear;int front;int maxsize;public static void main(String[] args) {Queue queue = new Queue();Scanner scan = new Scanner(System.in);int i;do {System.out.println("请输入:1入队 2出队 3查看 0退出");i = scan.nextInt();switch(i) {case 1:System.out.println("请输入要入队的元素:");queue.addQueue(scan.nextInt());break;case 2:queue.exitQueue();break;case 3:queue.showqueue();break;}}while(i!=0);System.out.println("退出成功");}//构造函数public Queue(){a = new int[4];rear = 0;front = 0;maxsize = 4;}//判断队列是否为空public boolean judgeNull() {return rear == front;}//判断队列是否已满public boolean judgeFull() {return (rear+1) % maxsize == front;}//入队public void addQueue(int num) {//判断,若队列已满则结束,不满则将其添加if(judgeFull()) {System.out.println("队列已满");return ;}a[rear] = num;rear = (rear+1) % maxsize;} //出队public void exitQueue() {//判断,若队列为空则结束,非空则将其最前的元素取出if(judgeNull()) {System.out.println("队列为空");return ;}front = (front+1) % maxsize;}//显示队列的元素public void showqueue() {if(judgeNull()) {System.out.println("队列为空");return ;}for (int i = front; i < front+count(); i++) {System.out.printf("a[%d] = %d\n",i%maxsize,a[i%maxsize]);}}//求出队列的有效个数public int count() {return (rear+maxsize-front)%maxsize;}}
以上就是java数据结构之队列的入队和出队的详细内容,更多请关注其它相关文章!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号