java报_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());

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值