您的位置:首页 > 理论基础 > 数据结构算法

数据结构——队列

2018-02-12 19:58 169 查看
队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。
(1)允许删除的一端称为队头(Front)。
(2)允许插入的一端称为队尾(Rear)。
(3)当队列中没有元素时称为空队列。
(4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。
在Java编程中,Queue的实现都是用LinkedList

顺序队列

package com.demo.quee;

public class SeqQuee {

private int top;
private int rear;
private int capacity = 10;
private int[] array;
private int size;

public SeqQuee(int capacity){
top = rear = 0;
array = new int[capacity];
}

public SeqQuee(){
array = new int[this.capacity];
}

public int size(){
return size;
}

public boolean isEmpty(){
return this.top == -1;
}

public void push(int data){
if(array.length == size){
addCapacity(size*2);
}
array[++rear] = data;
size++;
}

public int pop(){
if(isEmpty()){
return -1;
}
size--;
array[top] = (Integer) null;
return array[top--];
}

public void addCapacity(int capacity){
if(capacity < size){
return;
}
int[] old = array;
array = new int[capacity];
for(int i=0; i<size; i++){
array[i] = old[i];
}
}

}


链式队列

package com.demo.quee;

import com.demo.node.Node;

public class LinkedQuee {

private Node top;
private Node rear;
private int size;

public LinkedQuee(){
this.top = null;
}

public int size(){
return this.size;
}

public void push(int data) throws Exception{
if(this.top == null){
this.top = new Node(data);
}else{
Node p = new Node(data,this.top);
rear.next = p;
rear = p;
}
size++;
}

public int pop(){
Node p = top.next;
int data = p.data;
top.next = p.next;
p = null;
size--;
return data;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: