LeetCode链表&链表概念梳理及代码示例

链表的介绍(包括定义、直观理解、优势和示例)以及leetcode上一些链表相关算法题的思路。

目录

正文部分:

为什么要用链表,定义链表的基础是什么。

链表的直观理解

举例 (用链表而不是用数组来存储电影信息)

解析

继续优化代码

 

leetcode算法题-初级-链表


正文部分:

  • 为什么要用链表,定义链表的基础是什么。

LeetCode链表&链表概念梳理及代码示例_第1张图片

  • 链表的直观理解

LeetCode链表&链表概念梳理及代码示例_第2张图片

LeetCode链表&链表概念梳理及代码示例_第3张图片

LeetCode链表&链表概念梳理及代码示例_第4张图片

LeetCode链表&链表概念梳理及代码示例_第5张图片

 

  • 举例 (用链表而不是用数组来存储电影信息)

LeetCode链表&链表概念梳理及代码示例_第6张图片

LeetCode链表&链表概念梳理及代码示例_第7张图片

LeetCode链表&链表概念梳理及代码示例_第8张图片

LeetCode链表&链表概念梳理及代码示例_第9张图片

 

  • 解析

LeetCode链表&链表概念梳理及代码示例_第10张图片

LeetCode链表&链表概念梳理及代码示例_第11张图片

LeetCode链表&链表概念梳理及代码示例_第12张图片

 

LeetCode链表&链表概念梳理及代码示例_第13张图片

  • 继续优化代码

LeetCode链表&链表概念梳理及代码示例_第14张图片

 

LeetCode链表&链表概念梳理及代码示例_第15张图片

LeetCode链表&链表概念梳理及代码示例_第16张图片

 

LeetCode链表&链表概念梳理及代码示例_第17张图片

LeetCode链表&链表概念梳理及代码示例_第18张图片


leetcode算法题-初级-链表

  •  删除链表中的节点 
//删除某一节点
node->val = node->next->val;
node->next = node->next->next;
  •   删除链表的倒数第N个节点
//删除节点
second->next=second->next->next;
  • 反转链表

ListNode *cur=head;
ListNode *pre=NULL;

while(cur){
    ListNode *next=cur->next;
    cur->next=pre; 
    pre=cur;  
    cur=next;
}
  • 合并两个有序链表​​​​​​​​​​​​​​
//应用递归
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {

    //*** 特殊情况讨论省略 ***

    if( l1->val < l2->val){
        l1->next = mergeTwoLists(l1->next, l2);
        return l1;
    }
        
    else{
        l2->next = mergeTwoLists(l2->next, l1);
        return l2;
    }
}
  •  回文链表​​​​​​​
//快慢指针法找到中点,中点后反转链表
        ListNode* fast = head; 
        ListNode* slow = head; 
        ListNode* prev = nullptr;
 
        //find mid one
        while(fast){
            slow = slow->next;
            fast = fast->next? fast->next->next: fast->next;//fast->next 为空的时候就没有fast->next->next了。
        }

        //reverse 操作和上文反转链表一致
        //***省略
  • 环形链表
//依旧是快慢指针法,如果是环形链表,指针终将指到同一位置。
 while (fast->next && fast->next->next) {
        slow=slow->next;
        fast=fast->next->next;
        if(slow==fast){
            return true;
        }

最后,补充阅读材料,本文不再赘述:一个非常全面的带有应用的总结 Linked List的复习总结-from:简书dol_re_mi

 

参考资料:c primer 17章 从数组到链表  ||  leetcode习题

你可能感兴趣的:(Leetcode,LeetCode之旅)