数据结构之队列(java语言版)
队列(Queue):在逻辑上是一种线性存储结构。它有以下几个特点:
1、队列中数据是按照"先进先出(FIFO, First-In-First-Out)"方式进出队列的。
2、 队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作。
队列通常包括的两种操作:入队列 和 出队列。
队列的种类也很多,单向队列,双向队列,循环队列。
底层可以由数组(顺序表),链表实现。
数组队列
public class Queue {//队列
Array list;
public Queue() {
this.list=new Array(20);
}
public void enQueue(Object e) {
list.add(e);
System.out.println("入队");
}
public Object deQueue() {
System.out.println("出队");
return list.removeHead();
}
public void display() {
list.display();
}
}
测试
Queue queue=new Queue();
queue.enQueue("ok");
queue.enQueue("well");
queue.enQueue("good");
queue.enQueue("nice");
queue.display();
queue.deQueue();
queue.deQueue();
queue.display();
结果如下:
add success
入队
add success
入队
add success
入队
add success
入队
display:
ok well good nice
display over...
出队
出队
display:
good nice
display over...
链表队列
public class LinkQueue{
SingleLinkList list;
public LinkQueue(){
list=new SingleLinkList();
}
public void enQueue(Object e) {
list.add(e);
System.out.println("入队");
}
public Object deQueue() {
Object e=list.get(1);
list.remove(1);
System.out.println("出队");
return e;
}
public void display() {
list.display();
}
public int getSize(){
return list.getSize();
}
}
测试
LinkQueue queue2=new LinkQueue();
queue2.enQueue("ok");
queue2.enQueue("well");
queue2.enQueue("good");
queue2.enQueue("nice");
queue2.display();
queue2.deQueue();
queue2.deQueue();
queue2.display();
结果如下:
入队
入队
入队
入队
开始遍历数据:
ok well good nice
遍历结束
出队
出队
开始遍历数据:
good nice
遍历结束