代码随想录算法训练营day05||休息日第二章总结:链表总结篇

本文介绍了链表的理论基础,包括单链表、双链表和循环链表,强调了虚拟头节点在操作中的应用。文章详细讲述了链表的增删改查、数组与链表的性能比较,涉及反转链表、删除倒数第N个节点和链表相交等高级问题,以及环形链表的检测方法,最后附有思维导图帮助理解和记忆。
摘要由CSDN通过智能技术生成

链表的理论基础

前面day01介绍了链表的基本概念:

  • 链表的种类主要为:单链表,双链表,循环链表
  • 链表的存储方式:链表的节点在内存中是分散存储的,通过指针连在一起。
  • 链表是如何进行增删改查的。
  • 数组和链表在不同场景下的性能分析。

链表经典题目 

虚拟头结点

在链表第一题203.移除链表元素时,我们讲解了链表操作中一个非常总要的技巧:虚拟头节点。

链表的一大问题就是操作当前节点必须要找前一个节点才能操作。这就造成了,头结点的尴尬,因为头结点没有前一个节点了。

每次对应头结点的情况都要单独处理,所以使用虚拟头结点的技巧,就可以解决这个问题

链表的基本操作

在707.设计链表中,我们通设计链表把链表常见的五个操作练习了一遍。

这是练习链表基础操作的非常好的一道题目,考察了:

  • 获取链表第index个节点的数值
  • 在链表的最前面插入一个节点
  • 在链表的最后面插入一个节点
  • 在链表第index个节点前面插入一个节点
  • 删除链表的第index个节点的数值

可以说把这道题目做了,链表基本操作就OK了,再也不用担心链表增删改查整不明白了

这里依然使用了虚拟头结点的技巧,复习的时候,可以去看一下代码。

 反转链表

因为反转链表的代码相对简单,有的同学可能直接背下来了,但一写还是容易出问题。

反转链表是面试中高频题目,很考察面试者对链表操作的熟练程度。

在前面的总结中,给出了两种反转的方式,迭代法(双指针法)和递归法。

建议大家先学透迭代法,然后再看递归法,因为递归法比较绕,如果迭代还写不明白,递归基本也写不明白了。

可以先通过迭代法,彻底弄清楚链表反转的过程!

牢记:递归法的宗旨就是紧紧抓住原来的函数究竟返回的是什么?作用是什么? 即可

其余的细枝末节不要细究,编译器会帮我们自动完成。

删除倒数第N个节点

在题目19.中我们结合虚拟头结点 和 双指针法来移除链表倒数第N个节点。

链表相交

160题中,使用双指针来找到两个链表的交点(引用完全相同,即:内存地址完全相同的交点,而非数值相同

环形链表

在142环形链表2中,讲解了在链表如何找环,以及如何找环的入口位置。

这道题目可以说是链表的比较难的题目了。 但代码却十分简洁,主要在于一些逻辑和数学证明。

 以下是球友海螺人总结的思维导图:

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值