美文网首页链表
LeetCode单链表(LinkList)总结

LeetCode单链表(LinkList)总结

作者: evil_ice | 来源:发表于2016-12-27 20:37 被阅读356次
一,单链表的创建

单链表的创建一般分为分为头插发和尾插法

  • 头插法是每次将新的节点插入到头部,这样得到的链表顺序是逆序
  • 尾插法是每次将新的节点插入到尾部,这样得到的链表顺序是正序的. ** 值得注意的是,采用尾插法的时候需要一个尾指针,时时刻刻指向链表的尾部 **
二,链表的操作

链表的插入无非是插入,删除操作.

  • ** 在插入的删除的时候,一定要拿到他的前驱节点 **
  • ** 为了便于链表的操作(例如,插入删除),一般使用带头结点的链表**

常见的插入删除题目如下:
两个链表相加LeetCode 2. Add Two Numbers
合并两个有序的链表LeetCode 21. Merge Two Sorted Lists
成对交换链表节点LeetCode 24. Swap Nodes in Pairs
每k个节点翻转LeetCode 25. Reverse Nodes in k-Group
链表逆转LeetCode 61. Rotate List
删除重复元素LeetCode 82. Remove Duplicates from Sorted List II

链表分块LeetCode 86. Partition List
删除链表节点LeetCode 203. Remove Linked List Elements

三,链表的中点

求链表中点的方法
使用两个指针fast,low, fast和low同时向前跳, fast每次向前跳两个节点, low每次向前跳一个节点,当fast调到尾部的时候,low就指向了中点
相关题目

四,链表环的问题
  • 1,链表是否存在环?
  • 2,链表环的入口节点?
  • 3,链表中存在环,环的长度?
  • 1,对于问题1
    我们可以使用两个指针fast,low, fast每次前进两步,low每次前进一次,如果fast和low都到链表尾部且为空,则不在环如果fast和low第一次相遇到某一节点,且不为空,则存在环.

  • 2,对于问题2
    若存在环,第一次相遇后, 将fast指向头结点,然后fast和low都每次向前移动一步,那么再次相交的节点就是环的入口节点

  • 3,对于问题3
    假设头结点到环的入口节点为A, 环的入口节点到fast和low第一次相遇的节点距离为B, 环的长度为C.
    我们可以得出如下推论:
    1)第一次相遇时,low走过的长度是 A+B, fast走过的长度是2(A+B)
    2)fast比low走的距离刚好多环一周C.
    所以 2(A+B) - (A+B) = C ====> A+B = C

由上可知,当fast和low第一次相遇后, 将fast指向头节点,然后fast每次前进一步,而low不动,当其到达low指向的节点时,走过的长度就是环的周长

链表环.jpg

相关文章

  • LeetCode单链表(LinkList)总结

    一,单链表的创建 单链表的创建一般分为分为头插发和尾插法 头插法是每次将新的节点插入到头部,这样得到的链表顺序是逆...

  • 单链表-OC实现

    单链表 (OC实现) 节点定义 .h文件 结点定义 .m文件 单链表linkList定义 linkList.h文件...

  • 链表基本操作及代码实现

    涉及到单链表的基本操作有如下: int initList(linkList *);//初始化一个单链表,具有头指针...

  • Android:集合总结

    集合总结 ArrayList和LinkedList区别 ArrayList是动态数组,而Linklist是链表。A...

  • 关于链表经典算法题都在这里了

    1.单链表反转(LeetCode 206) 2.链表中环的检测 (LeetCode 141) 3.求链表中环开始结...

  • LeetCode 每日一题 [11] 反转链表

    LeetCode 反转链表 [简单] 反转一个单链表。 来源:力扣(LeetCode)链接:https://lee...

  • LeetCode链表专题

    (一)LeetCode206.反转链表 题目描述: 反转一个单链表。 代码实现 (二)LeetCode160. 相...

  • 链表的练习题

    编码实现:设带头结点L的单链表,从尾到头反向输出每个结点的值 void reverse(LinkList L) {...

  • 5个链表的常见操作

    链表 链表反转 LeetCode206:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 环路检...

  • 链表,单链表

    关于链表的一些知识 ifndef LINKLIST_H define LINKLIST_H typedef voi...

网友评论

    本文标题:LeetCode单链表(LinkList)总结

    本文链接:https://www.haomeiwen.com/subject/ayqsvttx.html