![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
链表题型及归纳
辰阳星宇
这个作者很懒,什么都没留下…
展开
-
109、【树与二叉树】leetcode ——701. 二叉搜索树中的插入操作:递归法+双指针迭代法(C++版本)
指针记录前一个遍历的结点,当遍历到插入位置时,让。的孩子指针指向该插入位置。原创 2023-01-18 13:12:05 · 105 阅读 · 0 评论 -
【算法刷题】链表题型及方法归纳
链表种类:单链表、双链表和循环链表主要特点:(1)存储空间不一定连续,通过指针链接在一起(2)删除、添加方便,查找麻烦。移除链表元素:虚拟头结点设置虚拟头结点便于对头结点进行增、删操作,不用再专门写一段代码来区分遍历到的是头结点还是其余结点,用同样的增、删代码即可实现。同时,还可以放置链表为空,也减少了程序的复杂性和出现bug的机会。移除链表元素设计链表:基本CRUD操作...原创 2022-03-24 20:55:16 · 879 阅读 · 0 评论 -
66、【链表】leetcode——142. 环形链表 II(C++、Python版本)
环形链表原创 2022-12-31 11:56:26 · 518 阅读 · 0 评论 -
64、【链表】leetcode——203. 移除链表元素(C++/Python版本)
链表移除元素原创 2022-12-30 10:53:51 · 113 阅读 · 0 评论 -
9、链表——从尾到头打印链表(python版)
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。用头插法# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def printListFro...原创 2020-03-08 10:52:00 · 269 阅读 · 1 评论 -
11、代码的鲁棒性——链表中倒数第k个节点(python版)
题目描述输入一个链表,输出该链表中倒数第k个结点。链表特点:通过指针链接,查找不能通过下标查找,只能通过移动指针到对应位置查找。若有含标记链表个数的头结点,则可知道共有多少个节点;若无则智能通过移动指针并记录移动次数来获取节点个数。因此,若想找到倒数第k个节点,需要知道一共有多少个n节点,再移动到整数第n-k个节点即可。而python语言拥有列表这个数据结构,该结构特点是可通过下标直接...原创 2020-03-09 10:55:15 · 322 阅读 · 1 评论 -
12、代码的鲁棒性——反转链表(python版)
题目描述输入一个链表,反转链表后,输出新链表的表头。由于输入的为链表输出的也为列表,因此可从调整它自身内部的指针指向下手。示例:初始链表:1—》2—》3—》4—》5—》6—》7—》None反转后链表:None《—1《—2《—3《—4《—5《—6《—7每次都为两两之间的指针反转,因此先考虑假如只有两个节点时候该如何反转。1—》2—》None,设pHead为原始头节点,tem...原创 2020-03-09 12:31:21 · 268 阅读 · 1 评论 -
14、时间空间效率的平衡——两个链表的第一个公共点(python版)
题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)...原创 2020-03-12 11:59:48 · 179 阅读 · 1 评论 -
13、举例让抽象具体化——合并两个排序的链表(python版)
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。目标:对两个链表进行比较后,再合并排序对于比较:每次取出一个数之后比较对于合并排序:依次比出比较中的较小值,然后合并将数据存储到链表中,如果使用pHead1和pHead2中的最小值首先作为存储的头结点的话,需要增加的比较次数会增多,首先需要比较pHead1和pHead2中是否有为空的表,...原创 2020-03-10 10:50:01 · 149 阅读 · 1 评论 -
26、【链表】相交链表(C++版本)
题目描述题目分析目标是找到两个链表若相交时的公共结点,那么便需要分析公共结点所具有的特性。假设链表A和链表B具有公共结点,那么在公共结点处之后,两个链表具有相同长度和数值的结点。而在公共结点之前,两个链表的所具有的结点个数并不一定相等。因此,若分别从链表A和B的公共结点开始遍历直到遍历到NULL结束,则链表A和链表B的遍历次数一定相等。问题的关键便是如何找到这一部分相等的长度,影响我们无法找到长度的因素是链表A和B公共节点之前的链表因为长度不一定相等。因此,我们从链表的长度进行研究。设链表A的原创 2021-01-14 14:10:14 · 443 阅读 · 0 评论 -
27、【链表】按递增次序输出单链表(C++版)
题目描述题目分析按递增次序输出,需要三个关键步骤,第一步是初始化后查找到最小值,第二步是删除,第三步进行下一轮的初始化迭代。代码实现首先,遍历查找最小值,设置一个结点p和其前驱节点pre,先从头结点后的第一个结点开始依次比较大小,pre指向第一个结点,p指向下一个节点,p不断往后走,若后续结点有更小的值,便将此时的p赋值给pre,知道遍历完p位置。然后,删除最小值结点,使用一个结点变量t进行实现。最后,再进行初始化,再从头开始依次遍历,找到最小值,直到删除完全部L中结点为止。/*typed原创 2021-01-15 12:04:43 · 2105 阅读 · 7 评论 -
31、【栈和队列】判断链表是否为中心对称(C++版)
题目描述题目分析本题的目标是判断以中心为轴,左右两端是否对称。栈具有后进先出的特性,因此可先遍历前半部分存储至栈中,再遍历后半部分,同时,依次让栈中的元素出栈,来判断比较是否相等。若全相等则为对称,若过程中有不相等时,则为部队称。关键便是先找到中心点,但有奇数个数序列和偶数个数序列这两种情况,需要分情况讨论。代码实现int dc(LinkList L, int n){ // L带有头结点 if(L->next == NULL || L->next->next == NULL原创 2021-01-26 11:28:39 · 853 阅读 · 0 评论 -
42、【链表】静态单链表(C/C++版)
描述由于动态链表在使用过程中需要进行创建结点等一系列操作,消耗时间相对较长,因此一般在只比较速度的情况下,使用数组创建静态链表能使速度更快。功能描述实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 k个插入的数后面的数;在第 k个插入的数后插入一个数。题目描述现在要对该链表进行 M次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第 k个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:原创 2021-04-25 10:16:19 · 395 阅读 · 0 评论 -
65、【链表】leetcode——707. 设计链表(C++、Python版本)
1、题目描述C++版本class MyLinkedList {public: struct LinkedNode { int val; LinkedNode* next; LinkedNode(int val) : val(val), next(nullptr) {} }; MyLinkedList() { _dummyHead = new LinkedNode(0); _size = 0;原创 2022-03-17 22:36:03 · 134 阅读 · 0 评论