欢迎光临散文网 会员登陆 & 注册

Leetcode链表【代码随想录--Part2】

2023-07-14 16:21 作者:Poyo_a  | 我要投稿

基础知识:

        1.  【链表的基本定义:】线性结构利用指针连结在一起。这些线性结构是指存储东西的连结方式,其中要连结的是结点。

         2.  【链表的结点】:分为数据域和指针域

单链表

 3.【链表的分类】:单链表、双链表和循环链表

   其中单链表是“基本模型”,双链表和循环链表是在他的基础上改进的。

           3.1【双链表】:其中的是指在原来一个指针域的基础上,再添加一个指针域,这样总的就有两个指针域。

双链表,特色是:双指针

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

举个例子:

类似于这样

        


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

【链表实际存储数据的例子】

来自youtube Neso Academy

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来不断遍历链表

Leetcode链表【代码随想录--Part2】的评论 (共 条)

分享到微博请遵守国家法律