java循环队列入队出队算法_循环队列进队与出队算法

队列是插入位置和删除位置受限制的线性表,它只能在一端进行插入,而另一端进行删除元素,其只允许插入的一端称为队尾,只允许删除的一端称为队首。

由于队列中的元素在插入与删除时,两端的都要变化,所以需要两个指针,一个是front指向队首元素,另一个是rear指向队尾的下一个地址。有的课本上是front指针指向前一个地址,rear指向队尾元素,这都是为了算法的方便而设定的。

队列的两个特点:先进先出和有序性。

队列有两种存储表示:可用链表和顺序表来存储队列。

队列按存储结构分为两种:顺序队列(循环队列)和链式队列。

⑴循环队列示意图:

①空循环队列示意图:

e58313c40dbd9ba2ead097c3c89e7314.png

②入队循环队列示意图:

22a70892771c3596431f4bf709c9487c.png

a16c03fd06f95d3f99ad165fcf98de1c.png

③队满循环队列示意图:

0ebb7f7b18003aaafd01a8896a4e0233.png

⑵循环队列代码:

①入队列代码:

int InsertQueue(sqQueue &qu,int x)

{

if((qu.rear+1)%maxSize==qu.front)

return 0;

qu.rear=(qu.rear+1)%maxSieze

qu.data[qu.rear]=x;

return 1;

}

②出队列代码:

int deleteQueue(sqQueue &qu,int &x)

{

if(qu.front==qu.rear)

return 0;

x=qu.data[qu.front];//先保存队头元素

qu.front=(qu.front+1)%maxSize;

return 1;

}

Your browser does not support the audio element.

TAG: 循环队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值