Leetcode链表【代码随想录--Part2】
基础知识:
1. 【链表的基本定义:】线性结构利用指针连结在一起。这些线性结构是指存储东西的连结方式,其中要连结的是结点。
2. 【链表的结点】:分为数据域和指针域

3.【链表的分类】:单链表、双链表和循环链表
其中单链表是“基本模型”,双链表和循环链表是在他的基础上改进的。
3.1【双链表】:其中的双是指在原来一个指针域的基础上,再添加一个指针域,这样总的就有两个指针域。

3.2【循环链表】:是指在单链表的基础上,把最后指向NULL的指针,指向它的头部
举个例子:


【链表的基本定义的例子】 给要点餐的一群人排好序用计算机存储起来。在计算机中我们可以采用 数组和链表。
【链表实际存储数据的例子】

head 存放第一个结点的数据地址,第一个结点存放第二个结点的数据地址......

练习:
方法1:

还是比较简单的,这里是学习了解法中的递归法。
【重点】:递归重点看return然后把return的结果和removeElenets对比来看。
方法2:虚拟头结点:
引入:我们经过第一个方法发现: 删除结点的话,可能是头结点,可能是除了头结点的。所以奇思妙想的我们,想到用虚拟头结点来解决这个问题,让head不再是第一个了呕。
第一步:我们来看看如何设置虚拟头结点;

dummynode原本指向1结点,然后跨过去指向4。和原来的删除结点差不多呕。
第二步:代码演示
【技术总结】:1.新申请了一个结点要用new
2.这个结点也同样使用了 cur来操作,来操作链表的走向。
3.最后就是delete 多余的结点,最后head要更新。不然会出现链条断不干净。


这道题一共要实现的目标是 获取第n个节点的值,头部插入节点,尾部插入节点,第n个节点钱插入节点。删第n个节点。

1.获取第n个节点的值(利用虚拟头结点):


【技术总结】:
要引入一个temp中间变量来存储,因为temp,因为cur改变指向,没有指针再连结head了。所以要提前备份一个。
利用cur=temp来不断遍历链表