Java算法数据结构第二节队列

一、队列算法介绍:

队列是一种先进先出(FIFO,First In First Out)的数据结构,其中元素的添加和移除分别发生在队列的两端:一端添加(enqueue),另一端移除(dequeue)。

Java提供了多种方式来实现队列,包括使用内置的集合类如LinkedList,或者是直接使用Queue接口的实现类如ArrayDequePriorityQueue

二、代码实现:

1)创建数组:

还有数组的对应属性要写完

通过构造器创建数组

2)判断队列的形态(是否满/空):

3)添加数据:

添加数据要先判断队列是否满,如果满了就要抛出该异常,保证程序可以运行下去

添加成功是尾部加一释放空间

4)数据删除:

数据删除和添加同理,都要先判断队列形态,确保符合删除条件

删除成功是头部加一压缩空间

5**)显示所有数据:**

先判断状态是否为空

符合条件就用循环输出

6**)显示头部数据:**

头部指针加一就是头部元素的下标

7)显示尾部数据:

尾部指针所指的位置就是尾部元素的下标

8) 写主函数:

java 复制代码
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;

这样就能观察到队列的运行方式。

三、注意:

要注意这样的队列是一次性的。

相关推荐
郝学胜-神的一滴7 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
不知名XL13 小时前
day50 单调栈
数据结构·算法·leetcode
cpp_250115 小时前
P10570 [JRKSJ R8] 网球
数据结构·c++·算法·题解
cpp_250115 小时前
P8377 [PFOI Round1] 暴龙的火锅
数据结构·c++·算法·题解·洛谷
季明洵16 小时前
C语言实现单链表
c语言·开发语言·数据结构·算法·链表
only-qi16 小时前
leetcode19. 删除链表的倒数第N个节点
数据结构·链表
cpp_250116 小时前
P9586 「MXOI Round 2」游戏
数据结构·c++·算法·题解·洛谷
浅念-16 小时前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
爱吃生蚝的于勒16 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
数智工坊17 小时前
【数据结构-树与二叉树】4.6 树与森林的存储-转化-遍历
数据结构