0


【典例】链表经典题目合集

目录导航

这篇目录导航主要目的之一是方便自己以后复习用,都是非常经典的题目。唯一不同的是,下面最后我调试文件贴出来,数据结构很锻炼调试能力,方便大家自己做题出问题时调试,思路没问题情况下,要坚信自己能调出来。每篇文章都包含了,题目链接、思路分析、题解以及sometimes小边独家反思。

小边碎碎念:目前链表极其经典的题目已经更完了,基本上是增删查改的熟练运用,会发现很多题目都是悄悄含着别的题目的影子。比如判断链表是否带环,快慢指针同样是快指针走两步慢指针走一步,其中就含着快慢指针经典题目,寻找返回链表中点,终止条件的判断需要分奇偶数个节点讨论;比如昨天的回文链表,又内含着寻找中间节点,反转单链表这样经典的题目。有一些题目就是分上下集的小故事,有些可以对比一下,有一点小小经验,它们都写在各个文章里了
这就是经典题目的意义吧,如果不够熟悉,就可能想不到,或者一写就写出小错误,我们不可能背下来它们,但要能做到,拿到之后就能快速正确分析。

在这里插入图片描述

正文开始@边通书

1. 删除链表中给定值为val的所有节点

文章链接:小题解

2. 反转一个单链表

文章链接:小题解

3. 返回链表中间节点&返回链表倒数第k个节点

文章链接:小题解

4. 链表的回文结构

文章链接:小题解

5. 合并两个有序链表

文章链接:小题解

6. 输入两个链表,找出它们第一个公共节点

文章链接:小题解

7. 分割链表

文章链接:小题解

8. 判断链表是否带环&找环的入口点

文章链接:小题解

9. 复制复杂链表

文章链接:小题解

10. 调试文件

其实就是自己根据需求手动尾插构建链表,打开监视、内存观察即可。一般错误都能自己调出来。

#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<stdbool.h>typedefint SListDataType;typedefstructSListNode{
    SListDataType data;structSListNode* next;}SLTNode;voidSListPrint(SLTNode* phead){
    SLTNode* cur = phead;while(cur){printf("%d ", cur->data);
        cur = cur->next;}printf("\n");}voidSListDestroy(SLTNode** pphead){// 这个链表是// 链表的空间必须遍历回收,因为申请时候就不连续
    SLTNode* cur =*pphead;
    SLTNode* next = cur->next;// 记录下一个节点的位置while(next){free(cur);
        cur = next;
        next = cur->next;}*pphead =NULL;}//申请新节点
SLTNode*BuyListNode(SListDataType x){
    SLTNode* newnode =(SLTNode*)malloc(sizeof(SLTNode));if(newnode ==NULL){printf("malloc failed\n");exit(-1);}
    newnode->data = x;
    newnode->next =NULL;return newnode;}voidSListPushBack(SLTNode** pphead, SListDataType x){assert(pphead);
    SLTNode* newnode =BuyListNode(x);//1.空链表 - 尾插头结点的地址pList发生改变,因此需要传pList的地址// **ppheadif(*pphead ==NULL){*pphead = newnode;return;}//找尾
    SLTNode* tail =*pphead;while(tail->next !=NULL){
        tail = tail->next;}
    tail->next = newnode;}intmain(){//根据需求尾插构造一个即可return0;}
标签: 链表 数据结构 c++

本文转载自: https://blog.csdn.net/qq_54851255/article/details/122771334
版权归原作者 呀小边同学 所有, 如有侵权,请联系我们删除。

“【典例】链表经典题目合集”的评论:

还没有评论