脑图
王道书籍的一些自己的思考
- P15的插入操作中,i的取值范围为1到L.length+1,但是在下面给出的示例代码中,在第L.length+1的位置插入时,直接返回了false(意味着不能执行插入操作,那么取值范围就不应该包含L.length+1),这里前后矛盾。在严蔚敏版《数据结构》中,i的范围是1到L.length+1,但是在第L.length+1的位置插入时,是会开辟新的存储空间,并且把所有的数据全部转移过去。在黑书《数据结构、算法与应用 C++语言描述》中的判满后的做法是直接将长度扩大两倍(这个也是C++的ArrayList的底层实现方法)。我个人认为的正确做法应该是严蔚敏版《数据结构》的做法。图片从上往下依次为王道、严蔚敏版《数据结构》、黑书
- P17第06题中第二个条目,在最后一个节点后插入一个新的节点,如果最后一个节点刚好占满了整个顺序表,那么再执行插入操作的时候就需要开辟一大段新的空间,然后将所有之前的数据全部复制过去,此时的时间复杂度为O(n),与答案给的不符。不过按照王道之前书籍给的逻辑,在表满的清空下执行插入是直接返回false的,这样看起来应该是上一点的连带错误了。