队列
认识队列
同样可以使用数组或列表来简历一个队列,不过堆栈只需要一个top,指针指向对堆栈顶,而队列则必须使用front和rear两个指针分别指向前端和后端
队列的特征
-
先进先出(FIFO)
-
拥有两种基本操作,加入和删除,而且使用front与rear两个指针来分别指向队列的前端和尾端
队列的数组实现
package 队列的数组实现;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* @author YanAemons
* @date 2021/10/8 19:13
*/
public class Main {
public static int front = -1,rear = -1, max = 3;
public static int val;
public static char ch;
public static int queue[] = new int[max];
public static void main(String[] args) throws IOException {
String strM;
int M = 0;
BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
while (rear < max-1 && M !=3)
{
System.out.println("[1]存入一个数值[2]取出一个数值[3]结束");
strM = keyin.readLine();
M = Integer.parseInt(strM);
switch (M)
{
case 1:
System.out.print("请输入数值");
strM = keyin.readLine();
val = Integer.parseInt(strM);
rear++;
queue[rear] = val;
break;
case 2:
if (rear > front)
{
front++;
System.out.print("取出数值为"+queue[front]);
queue[front] = 0;
}
else
{
System.out.println("列表已空");
break;
}
break;
default:
System.out.println();
break;
}
}
if(rear == max-1) System.out.print("列表已经满了");
System.out.println("目前列表中的数据");
if (front >= rear)
{
System.out.println("没有");
System.out.println("列表已经空了");
}
else
{
while(