链表总结篇
链表的经典思想:
我们以之前写的几道经典链表题目为例,总结一下解决链表问题的主要思想。
1.虚拟头结点(203题)
在移除链表元素的题目中,我们介绍了链表操作中一个非常总要的技巧:虚拟头节点。
链表的一大问题就是操作当前节点必须要找前一个节点才能操作。这就造成了,头结点的尴尬,因为头结点没有前一个节点了。
每次对应头结点的情况都要单独处理,所以使用虚拟头结点的技巧,就可以解决这个问题。
2.链表的基本操作(707题)
这是练习链表基础操作的非常好的一道题目,考察了:(1)获取链表第index个节点的数值(2)在链表的最前面插入一个节点(3)在链表的最后面插入一个节点(4)在链表第index个节点前面插入一个节点(5)删除链表的第index个节点的数值。
值得注意的是,这里依然使用了虚拟头结点的技巧。
3.反转链表(206题)
反转链表是面试中高频题目,很考察面试者对链表操作的熟练程度。
在这题中,我们给出了两种反转的方式,迭代法和递归法。
建议先看透迭代法,然后再看递归法,因为递归法比较绕,如果迭代还写不明白,递归基本也写不明白了。
4.删除倒数第N个结点(19题)
这题中我们主要是结合虚拟头结点 和 双指针法来移除链表倒数第N个节点。
5.链表相交(面试题02.07)
这题中我们使用双指针来找到两个链表的交点(引用完全相同,即:内存地址完全相同的交点)。
6.环形链表(142题)
在本题中,我们讲解了在链表如何找环,以及如何找环的入口位置。
这道题目可以说是链表的比较难的题目了。 但代码却十分简洁,主要在于一些数学证明。
总结:
考察链表的操作其实就是考察指针的操作,是面试中很常见的类型。下面是链表篇的知识导图:

本文来自博客园,作者:Ricentch,转载请注明原文链接:https://www.cnblogs.com/cnwsh/p/16580374.html

浙公网安备 33010602011771号