Bootstrap

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

一、队列算法介绍:

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

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

二、代码实现:

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;

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

三、注意:

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

;