链表
单链表的反转
给定一个单链表的头 head,完成链表的逆序调整

将原链表从Head开始取出(原链表指针为head,新链表指针为newHead),一次添加到新链表的Head上即可完成逆序操作。代码如下:
更简单的理解方式:所有箭头方向调换
双链表的反转

如上图所示,双链表的反转比单链表更简单,只需要将上述所有元素的next指针与last指针指向的元素完全互相调换即可,代码如下:
删除单链表指定的值
K个节点的组内逆序调整
LeetCode: 25. K 个一组翻转链表 - 力扣(LeetCode) (leetcode-cn.com)
链表问题画图处理
我自己的解法:
两个链表相加
给定两个链表的头结点head1和head2,认为从左到右是某个数字从低位到高位,返回相加之后的链表。例子:
解析,可以用加法的竖式来完成这个功能:
循环遍历链表,分为两个阶段:
在短链表内范围的数字相加,注意记录进位信息
在短链表外,长链表内的数字相加,注意处理进位信息
处理溢出的进位
代码如下:
两个有序链表的合并
给定两个有序链表头节点 head1和head2,返回合并之后的大链表,要求依然有序。例子:
思路:
找到较小的头部,那么这个链表就是主链表,也就是新链表的头
两个指针 cur1 和 cur2,cur1指向主链表头部,cur2 指向副链表头部
移动cur1
如果cur1的新值小于cur2所处的位置,继续移动cur1
如果cur1的新值大于cur2所处的位置,将cur2所处元素插入到cur1,并移动cur2指针到链表的下个位置
当cur1移动到尾部时,将cur2剩余节点全部拼接到主链表中,链表的合并已经完成
当cur2移动到尾部时,链表的合并已经完成
代码:
最后更新于
这有帮助吗?