package com.quene;
public class ArrayQuene {
public int capcity;
public int front;
public int rear;
public int[] array;
public ArrayQuene(int capcity){
this.array = new int[capcity];
this.front = 0;
this.rear = 0;
this.capcity = capcity;
}
public void enQuene(int element){
if(isFull()){
throw new RuntimeException("quene is full");
}
array[rear] = element;
rear = (rear + 1)%capcity;
}
public int deQuene(){
if(isEmpty()){
throw new RuntimeException("quene is empty");
}
int num = array[front];
front = (front + 1) % capcity;
return num;
}
public int peek(){
return array[front];
}
//这里实际存储少于capcity-1;这样的话更容易判断是否队列为满
public boolean isFull(){
return ((rear + 1)%capcity) == front;
}
public boolean isEmpty(){
return front == rear;
}
}
package com.quene;
public class LinkedQuene {
private Node front;
private Node rear;
private class Node{
private int data;
private Node next;
public Node(int data){
this.data = data;
}
}
public void enQuene(int data){
Node node = new Node(data);
if(rear == null){
rear = node;
}else {
rear.next = node;
rear = node;
}
}
public int deQuene(){
if(isEmpty()){
throw new RuntimeException("quene is null");
}
int num = front.data;
front = front.next;
if(front == null){
rear = null;
}
return num;
}
public boolean isEmpty(){
return front == null;
}
}