为什么队尾指向第四个格子,队列就满了?
插入第一个元素,队尾指向第二个格子
插入第二个元素,队尾指向第三个格子
插入第三个元素,队尾指向第四个格子
这时候队列就满了??它不是queue[4]嘛??
插入第一个元素,队尾指向第二个格子
插入第二个元素,队尾指向第三个格子
插入第三个元素,队尾指向第四个格子
这时候队列就满了??它不是queue[4]嘛??
2016-12-15
这种插入方法 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,用上述两种定义方法的时候的判空判满函数是有所区别的,写出来乱乱的,在这边看到老师定义的这个,觉得清爽多了
举报