为什么队尾指向第四个格子,队列就满了?

来源:4-1 环形队列实现上

谁记得

2016-12-15 20:27

插入第一个元素,队尾指向第二个格子

插入第二个元素,队尾指向第三个格子

插入第三个元素,队尾指向第四个格子

这时候队列就满了??它不是queue[4]嘛??

写回答 关注

1回答

  • Ephraim
    2016-12-16 09:42:28

    这种插入方法 tail指向第四个格子的时候,队列不是满的

    这是环形队列的一个特点,区别在于是queue[i++]还是queue[++i]

    假如说一开始空队的时候i是-1  那么入队显然要queue[(++i)%capacity],出队要queue[(i++)%capacity]

    假如说一开始空队的时候i是0,  那么入队显然要queue[(i++)%capacity],出队是先让i-1 再queue[i%capacity]

    这两种定义的方法都可以,差别是只是个人习惯

    在James老师的实例中,他采用的是第一种方法,然后他判断空和满的方法不是通过tail来判断的,而是根据队列实际长度len和最大长度capacity来判断的,每次入队一个len++,出队一个len--,这就保证了len的大小就是队伍中所存在的元素个数,如果len==capacity,显然这时候就满了,len==0为空。

    我们也在学数据结构,我觉得慕课的讲得比我们上课的内容好理解多了。

    我们教队列的时候没有定义len,用上述两种定义方法的时候的判空判满函数是有所区别的,写出来乱乱的,在这边看到老师定义的这个,觉得清爽多了

数据结构探险—队列篇

与现实最为贴近的数据结构-队列,带大家进入数据结构的美妙世界

110035 学习 · 170 问题

查看课程

相似问题