【数据结构之链表系列】链表热门面试题(二)

前言

在这里插入图片描述

一、删除链表的倒数第 N 个结点

题目:
在这里插入图片描述
方法1:找到删除的结点(双指针法)+尾插
提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:
本题的基本思路就是先找到倒数第n个结点,然后再遍历原来链表,将不是该节点的其他结点依次尾插进新链表,然后返回新链表的头指针即可。上面这个代码我们将空表和链表中只有一个结点的情况单独进行分析,其实当链表中只有一个结点的时候,上面代码中的常规情况也是可以符合的。上面在遍历比较原来链表中的结点和删除结点的时候需要注意比较的一定只能是结点的指针,而不能是结点中存在的值,因为不同的结点可能存放的值是一样的。

方法2:找到删除的结点(双指针法)+双指针(前后指针)
提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:
这个方法是再找到要删除的结点之后,再找到删除结点的前一个结点,然后让前一个结点的next指向删除结点的下一个即可。注意找前一个的时候,prev刚开始是从NULL开始的,因为头结点没有所谓的前一个结点。

二、两两交换链表中的节点

题目:
在这里插入图片描述

提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

三、旋转链表

题目:
在这里插入图片描述

提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

四、删除排序链表中的重复元素

题目:
在这里插入图片描述

提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

五、删除排序链表中的重复元素 II

题目:
在这里插入图片描述

提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

六、反转链表II

题目:
在这里插入图片描述

提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

七、删除链表中的节点

题目:
在这里插入图片描述

提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:
这个题没有给我们链表,只是给了我们要删除的结点的指针(地址),那么我们就需要自己假设这个结点是某一个链表在中的结点,那么一般情况下,删除单链表中的结点采取的方法是找到这个删除结点的上一个结点和下一个结点,那么在这个题中,没有给我们链表你,所以这种方法显然是不合适的,那么删除链表中结点的另一个思路是可以转换成删除这个链表的下一个结点,因为题目已经提示,删除的结点不是链表中的最后一个结点,说明删除的结点的下一个还是有结点的,所以我们可以转换成删除这个结点的下一个结点,步骤是先将下一个结点的数据复制到该结点,然后让当前结点的next指针指向下一个结点的下一个结点,从而下一个结点就从原来链表解除了。

八、奇偶链表

题目:
在这里插入图片描述

方法1:多指针法+链表分割+链表连接
提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

方法2:标志位法+链表分割+链表连接
提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值