队列的两种实现方法

来源:互联网 发布:电脑音响品牌 知乎 编辑:程序博客网 时间:2024/06/05 03:22

一:在顺序队列的实现中,队列表示成带有如下内容的对象:

(1)一个计数器count,他跟踪队列中的元素的数目(队列长度)

(2)一个数组索引front,他跟踪队列中下一个要删除元素的索引

(3)一个数组索引rear,他跟踪队列中下一个队列元素的插入位置

(4)一个队列元素数组itemArray,他存储了队列元素的内容

(6)一个capacity,他给出了当前itemArray中的索引位置数(队列实际元素数目)

(6)一个capacityIncrement,数组扩展幅度


算法实现略。


二:在链式队列的表示中,用含有两个指针域和一个数据域的对象来表述队列,这两个指针分别指向节点链表的首末。入队列时,在链表的尾部插入;出队列时,在链表的首部插入。

算法实现:

package pk.queue;

class QueueNode {
Object item;
QueueNode link;
}

public class LinkQueue {
private QueueNode font;
private QueueNode rear;
private int count;

public boolean empty() {
return (count==0);
}
public void insert(Object newItem) {
QueueNode tempNode = new QueueNode() ;
tempNode.item = newItem;
tempNode.link = null;
if(rear == null) {
font = rear = tempNode;//空队列时,font和rear都指向null
} else {
rear.link = tempNode;
rear = tempNode;
}
count ++;
}
public Object remove() {
if(count == 0) {
return null;
} else {
Object temp = font.item;
font = font.link;
if(font == null) {
rear = null;
}
count --;
return temp;
}
}
}

原创粉丝点击