或许size的问题
来源:3-7 循环队列的实现
无心铁憨憨
2018-12-09


场景是这样的,创建一个队列,传入容量是10,循环插入10个元素,然后删除一个元素,再插入两个元素,这个时候进行扩容,扩容的时候,我tail直接等于getSize()是有问题,而用一个变量去接收getSize()返回的值再赋给tail就是正确的,为什么tail直接等于getSize()会有问题呢?
写回答
1回答
-
如果你是指把你的代码中int j = getSize改成tail = getSize()的话,是因为:getSize的计算依靠tail,如果在这里修改了tail,下面循环中使用getSize计算的结果就错了。
具体用一个测试用例,实际跟踪一下,看看这样写,程序发生了什么?
学习算法和数据结构这类底层知识和学习框架最大的一个区别就在于,debug时不会像学习框架时,非常容易就脱离了自己的逻辑,进入了框架的底层代码,使得在一些情况下调试跟踪非常有难度。算法和数据结构的近乎所有逻辑底层都是自己搭建的,如果发生逻辑错误,一定能追溯到自己的代码中。基本不涉及“使用不当”的问题。
所以,学习算法和数据结构,不仅仅要学习这些经典算法和数据结构背后的思想,更是一个锻炼逻辑思维和编程能力的过程。这也是大厂会更注重算法和数据结构的原因之一,通过算法和数据结构的考察,可以更好地考察逻辑能力和编程思维能力。这个过程中,debug是至关重要的。很多时候,自己觉得自己的实现没有问题,但跟进去,就发现了自己的逻辑漏洞。千万不要只对着代码看,一定要实际的动手调试。进步就发生在这个过程中。调试多了,才能练就眼睛看着代码,就像编译器在执行代码一样的本事:)
继续加油:)
012018-12-09
相似问题