C#实现循环顺序队列(队列)

论坛 期权论坛 脚本     
匿名网站用户   2020-12-19 18:42   32   0

队列同栈相对,前者为先进先出(First In First In)。

顺序队里中,使用数组存储数据,基本原理同顺序线性表和顺序栈。由于使用数组,所以必须事先定义数组的最大容量MaxSize,使用front表示队头位置(最先入元素),使用rear表示队尾元素(最后入元素),这样每进入一个元素,rear要自加一次,每取出一个元素,front也要自加1,这样的话,rear或front很快就会到达MaxSize,无法再添加新的元素。为了避免这种情况出现,使用循环机制,即,若rear到达Maxsize-1的位置时,如果还需要继续添加的话,rear重新变为0.这样,判断队列已满的条件是,(Rear + 1) % MaxSize == Front。

做如下规定:

1.空队列时,有rear=front=-1,要求这是充要条件,即满足rear=front=-1就是空队列,如果队列中没有元素,则要求,rear=front=-1。注意,不能靠rear=front来判断是否为空队列,因为当加入第一个元素的时候,rear=front=0,相等不是空队列的充分条件,还必须是rear和front都等于-1才行。

如果是向空队列中添加元素,则必须从0索引开始,即rear=front=0。

2.添加元素时,必须判断目前的rear与maxsize的关系,如果rear=maxsize-1,则rear要重新从0开始。

3.元素出队列时,必须判断front与maxsize和rear的关系,并依此修改front的值。修改后,如果rear+1=front,则表明此时队列中没有元素,必须按照1的要求,设置rear=front=-1。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP