java队列出队_java中如何实现队列的入队与出队

9110899a7ce298dd0baebe7741123fac.png

首先要定义几个变量与数组:

a:表示队列的数组

rear:表示队列尾,这里初始化为0

(入队一个元素下标就往后移动一位)

front:表示队列头,同样初始化为0

(出队一个元素下标就往后移动一位)

maxsize:最大下标,这里初始化为4,但是队列只能存放3个。(队列的长度加一)

这里数组预留出的一个位置用来判断队列的空或满。

java相关视频推荐:java视频教程

参考下面的图方便理解:

2114217e3607f567614176c39b894e0e.png

此时元素个数为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相关知识,可以访问:java入门教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值