java实现队列_Java实现队列

队列是一种先进先出的数据结构,和栈刚好相反,队列在算法中也应用广泛。本文,我们主要探讨Java实现队列。

队列

队列是一种先进先出的数据结构,就像排队打饭一样,先排队的会先打饭。队列的结构如下,分为队头和队尾。队列的实现分为动态实现和静态实现

bcd83eb2c805

队列结构

Java实现静态队列

通过数组实现队列和通过数组实现栈类似。代码实现如下:

public class Queue {

private Object[] data;

private int front;//队列头

private int rear;//队列尾

private int size;//队列大小

public Queue(int size) {

this.size = size;

data = new Object[size];

}

/**

* 入队

* @param value

*/

public void in(Object value) throws Exception {

if(rear == size){

throw new Exception("队列已满异常");

}

data[rear ++] = value;

}

/**

* 出队

*/

public Object out() throws Exception {

if(isEmpty()){

throw new Exception("空队列异常");

}

Object value = data[front];

data[front++] = null;

return value;

}

/**

* 是否为空队列

* @return

*/

public boolean isEmpty(){

return front == rear;

}

/**

* 遍历队

*/

public void traverse(){

for(int i = front; i < rear; i++){

System.out.println(""+data[i]);

}

}

}

Java实现动态队列

动态队列是通过链表实现的,有个头指针指向队头

public class LinkQueue {

private Node front;

private Node rear;

private int size;

public LinkQueue() {

this.front = new Node();

this.rear = new Node();

}

/**

* 入队

* @param value

*/

public void in(Object value)throws Exception{

Node newNode = new Node(value);

Node temp = front;

while (temp.next != null){

temp = temp.next;

}

temp.next = newNode;

rear = newNode;

size ++;

}

/**

* 出队

* @throws Exception

*/

public Object out()throws Exception{

if(front.next == null){

throw new Exception("队列为空异常");

}

Node firstNode = front.next;

front.next = firstNode.next;

size--;

return firstNode.data;

}

/**

* 遍历队列

*/

public void traverse(){

Node temp = front.next;

while ( temp != null){

System.out.println(""+temp.data);

temp = temp.next;

}

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值