一、队列算法介绍:
队列是一种先进先出(FIFO,First In First Out)的数据结构,其中元素的添加和移除分别发生在队列的两端:一端添加(enqueue),另一端移除(dequeue)。
Java提供了多种方式来实现队列,包括使用内置的集合类如LinkedList
,或者是直接使用Queue
接口的实现类如ArrayDeque
或PriorityQueue
等
二、代码实现:
1)创建数组:
还有数组的对应属性要写完
通过构造器创建数组
2)判断队列的形态(是否满/空):
3)添加数据:
添加数据要先判断队列是否满,如果满了就要抛出该异常,保证程序可以运行下去
添加成功是尾部加一释放空间
4)数据删除:
数据删除和添加同理,都要先判断队列形态,确保符合删除条件
删除成功是头部加一压缩空间
5)显示所有数据:
先判断状态是否为空
符合条件就用循环输出
6)显示头部数据:
头部指针加一就是头部元素的下标
7)显示尾部数据:
尾部指针所指的位置就是尾部元素的下标
8) 写主函数:
public static void main(String[] args) {
ArrayQueue arrayQueue = new ArrayQueue(3);
System.out.println("1,添加数据到队列");
System.out.println("2,队列数据移除");
System.out.println("3,显示队列数据");
System.out.println("4,显示队列头部元素");
System.out.println("5,显示队列尾部元素");
while (true){
System.out.println("输入选项");
Scanner scanner = new Scanner(System.in);
Integer next = scanner.nextInt();
switch (next){
case 1://添加数据
try {
System.out.println("输入要添加的数据");
int next1 = scanner.nextInt();
arrayQueue.addQueue(next1);
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
case 2://移除数据
try{
int res=arrayQueue.removeQueue();
System.out.println("取出元素是"+res);
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
case 3://显示数据
try{
arrayQueue.showQueue();
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
case 4://查看队列头
try{
int res=arrayQueue.showheadQueue();
System.out.println("头部元素是"+res);
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
case 5:
try{
int res=arrayQueue.showyiQueue();
System.out.println("尾部元素是"+res);
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
这样就能观察到队列的运行方式。