初级算法-链表
知识
链表是一种线性数据结构。
查找O(n),删除O(1),插入O(1),随机读取O(n)。
技巧
节点关系:
对于链表来说,我们通常没有办法知晓链表的全貌,只能了解从已知的当前节点开始的表的内容。所以,在对链表问题做处理时,考虑节点之间的关系(主要是当前节点相关的函数关系)是解决链表问题的主要手段。
所以,在进行链表题时,预先将整个链表的处理流程书写完毕再写代码有事半功倍的效果。
表头设置(浅拷贝):
由于链表通常需要使用对象的next
方法来获取下一节点,所以为了在处理完整个链表后,可以对初始节点进行返回,对表头节点进行浅拷贝是非常有用的。
在这里需要注意,对next节点的继承需要在当前节点处理之前,不然会因为浅拷贝而改变next节点的状态。
此外需要注意,随着对head的迭代或者递归,直接指定表头节点的next为head是无效的手段。
迭代或递归:
双指针法:
重点看反转链表一题。