采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师好,为什么front是数组中的第一个元素,而tail却不是数组中的最后一个元素,而是最后一个元素的后一个元素? 这就好比是一头大象,front是大象的头,但tail不是大象的尾巴。假设front是第一个元素,tail是最后一个元素,front初始值设置为0,tail初始值设置为-1,这样可以表示此时的数组是空数组;当fonrt==tail时,代表数组满了,这样就不用浪费一个元素的空间了,您看我这样考虑是否妥当?
front 初始是 0,tail 初始是 -1。
tail 指向最后一个元素,所以添加一个元素以后,tail 变成了 0。front 指向第一个元素,那还是 0。
此时 front == tail 了。但是,整个队列里只有一个元素,不满。
把你想象的逻辑,实际用代码表达一下,然后用实际的数据测试一下,试试看?
继续加油!:)
嗯哪,老师说的对,初始值front=0,tail=0, 可以判断当 front !=0 && tail !=0 && front ==tail 时,数组满了。
还是不对。虽然初始的时候 front 为 0,但是向队列中加元素,front 会移动。比如先添加三个元素,tail 就到 2 了,再出队三个元素,front 也到 2 了。此时 front == tail,但队列里没有元素。
确实如此,谢谢老师!
登录后可查看更多问答,登录/注册
动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…
10.3k 16
1.4k 17
1.3k 14
1.2k 14