• Java日报


    1.今天学习了队列里单向队列的使用

    队列是一种特殊的线性表,单向队列只能在一端插入数据(后),另一端删除数据(前);它和栈一样,队列是一种操作受限制的线性表;进行插入操作的称为队尾,进行删除操作的称为队头;队列中的数据被称为元素;没有元素的队列称为空队列。

    由于只能一端删除或者插入,所以只有最先进入队列的才能被删除,因此又被称为先进先出(FIFO—first in first out)线性表。

    package com.lzw.demo;

    /**

    * @author lz w

    * @Date 2019年5月15日

    */

    public class MyQueue { 

    private Object[] queArray;

    //队列总大小

    private int maxSize;

    //前端

    private int front;

    //后端

    private int rear;

    //队列中元素的实际数目

    private int nItems;

    public MyQueue(int s){

    maxSize = s;

    queArray = new Object[maxSize];

    front = 0;

    rear = -1;

    nItems = 0;

    }

    //队列中新增数据

    public void insert(int value){

    if(isFull()){

    System.out.println("队列已满!!!");

    }else{

    //如果队列尾部指向顶了,那么循环回来,执行队列的第一个元素

    if(rear == maxSize -1){

    rear = -1;

    }

    //队尾指针加1,然后在队尾指针处插入新的数据

    queArray[++rear] = value;

    nItems++;

    }

    }

    //移除数据

    public Object remove(){

    Object removeValue = null;

    if(!isEmpty()){

    removeValue = queArray[front];

    queArray[front] = null;

    front++;

    if(front == maxSize){

    front = 0;

    }

    nItems--;

    return removeValue;

    }

    return removeValue;

    }

    //查看对尾数据

    public Object peekRear(){

    return queArray[rear];

    }

    //查看对头数据

    public Object peekFront(){

    return queArray[front];

    }

    //判断队列是否满了

    public boolean isFull(){

    return (nItems == maxSize);

    }

    //判断队列是否为空

    public boolean isEmpty(){

    return (nItems ==0);

    }

    //返回队列的大小

    public int getSize(){

    return nItems;

    }

    public static void main(String[] args) {

    MyQueue queue = new MyQueue(3);

    queue.insert(1);

    System.out.println("队列大小:"+queue.getSize());

    queue.insert(2);

    System.out.println("队列大小:"+queue.getSize());

    queue.insert(3);//queArray数组数据为[1,2,3]

    System.out.println("队列大小:"+queue.getSize());

    System.out.println("队头:"+queue.peekFront()); //1

    System.out.println("队尾:"+queue.peekRear());

    queue.remove();//queArray数组数据为[null,2,3]

    System.out.println(queue.peekFront()); //2

    System.out.println("队列大小:"+queue.getSize());

    queue.insert(4);//queArray数组数据为[4,2,3]

    queue.insert(5);//队列已满,queArray数组数据为[4,2,3]

    System.out.println("队列大小:"+queue.getSize());

    System.out.println("队头:"+queue.peekFront()));

    System.out.println("队尾:"+queue.peekRear());

    }

    }

  • 相关阅读:
    多线程----Thread类,Runnable接口,线程池,Callable接口,线程安全
    PHP-数据类型
    MySQL-数据与事务控制语言
    数据库查询练习题
    MySQL-数据操作语言(DML)
    MySQL-表操作
    MySQL-数据类型
    MySQL-数据库相关操作
    js Dom简单练习题
    js中的Dom操作
  • 原文地址:https://www.cnblogs.com/wanghaoning/p/13842869.html
Copyright © 2020-2023  润新知