参考
本文参考自《数据结构与算法分析C++描述》第三版,作者Mark Allen Weiss
1.表
1)链表可以解决什么问题?其一般思想是?
表的数组实现带来的问题
数组实现printList线性时间,findKth 常数时间,但插入和删除操作在整个表中发生时,时间开销最坏的情况是线性的O(N),数组就不合适。
链表一般思想
为避免插入和删除带来的线性开销,允许表可以不连续存储,否则表的部分或全部都要整体移动。
下图表示了链表的一般性思想:
以及插入和删除方法的一般性思想:
当删除最后一项时,需要找到最后一项前面的项,才能去更新其next 链接到NULL,需要O(N),如果双向链表则只需要O(1)