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

 

 

    队列同栈相对,前者为先进先出(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。

 

 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值