java数据结构之队列的实现


前言

本文将用java语言实现常用数据结构之一: 队列

一、队列是什么?

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 队列中没有元素时,称为空队列。
队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)线性表。

https://baike.baidu.com/item/%E9%98%9F%E5%88%97/14580481?fr=aladdin

二、具体实现

1.思路分析

队列中需要
private int front;//队列头
private int rear; //队列尾
为了规定初始容量 我们可以规定 private int maxSize;最大数量
用数组实现队列,则队列就是由数组组成的
private int[] arr;//存放数据 ,模拟队列

 private int maxSize;
    private int front;//队列头
    private int rear; //队列尾
    /**
     * 存放数据 ,模拟队列
     */
    private int[] arr;//存放数据 ,模拟队列
    

构造方法 确定初始值
front=-1;//指向队列的头部前一个位置
rear=-1;//指向队列尾部的具体位置,就是队列最后一个数据的位置
这两个初始值关系到怎么确定当前数据的位置,要注意

 public arrQueue(int arrMaxSize){
        maxSize=arrMaxSize;
        arr=new int[maxSize];
        front=-1;//指向队列的头部前一个位置
        rear=-1;//指向队列尾部的具体位置,就是队列最后一个数据的位置
    }

2.获取、添加、删除、遍历队列方法的实现

辅助方法

   //判断队列是否满
    public boolean isFull(){
        return  rear==maxSize -1;
    }
    public boolean isEmpty(){
        return rear==front;
    }

添加:首先判断是否满了 如果是 则直接返回
如果还没满 让头(rear)后移(++) 并赋值将数据插入至队列的尾部;

 public void addQueue(int n){
        if (isFull()){
            System.out.println("已经满了");
            return;
        }
        //rear后移 因为先进先出 头部分先被取到 添加从尾部开始添加
        rear++;
        arr[rear]=n;
    }

出列

 //获取队列
    public  int getQueue(){

        if (isEmpty()){
            throw new RuntimeException("队列空,不能获取数据");
        }
        //front前移 因为先进先出 头部分先被取到
        front++;
        return arr[front];
    }

显示队列头部,不是出列 不删除数据

   /**
     * 显示队列的头部 不是取数据
     */
    public  int headQueue(){
        if (isEmpty()){
            throw new RuntimeException("队列空,不能获取数据");

        }
        return arr[front+1];
    }

遍历队列 使用fo循环

    public void showQueue(){
        if (isEmpty()){
            System.out.println("没有数据");
            return;
        }
        for (int i=0;i<arr.length;i++){
            System.out.printf("arr[%d]=%d\n",i,arr[i]);
        }
    }

总结+技巧+语法

要想在后台输出占位符 不能直接在Ideal sout 要格式化输出 printf 而不是println
在增删改查 时首先要判断是否为空isEmpty或者是否为满isFull,而后再进行具体操作(如将rear++)
有具体返回类型的方法发现错误时候就不能直接return 而是要throw RuntimeException

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值