队列的两种实现方法

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

(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;
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值