为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

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

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

正在回答

1 回答

这种插入方法 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,用上述两种定义方法的时候的判空判满函数是有所区别的,写出来乱乱的,在这边看到老师定义的这个,觉得清爽多了

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信