立冬特辑-----链表OJ题优选合集~~

这篇具有很好参考价值的文章主要介绍了立冬特辑-----链表OJ题优选合集~~。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


目录

​​​​​​​前言🌳

1.链表中倒数第k个结点🌸

1.1 思路

1.2 代码

2. 链表的回文结构🪸

2.1 思路

2.2 代码

3.相交链表🌪️

3.1 思路

3.2 代码

4.环形链表I🌊🛳️

4.1 思路

4.2 代码

4--->5过渡:拓展思考🧐💭

5.环形链表II🏥🚑

5.1 思路

5.2 代码

6.随机链表的复制👊🤡

6.1 思路​编辑

6.2 代码

后语🍻


前言🌳

之前,我们已经将链表部分的知识了解学习的差不多了,那么没有题目来练练手算个什么事⁉️必需给大家安排上,小江优选---保质又保量‼️


1.链表中倒数第k个结点🌸

链表中倒数第k个结点_牛客题霸_牛客网

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


1.1 思路

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


忘记之前的题目的同学,可以看看这篇博客:

学习笔记---看完就会的单链表的应用~~-CSDN博客文章浏览阅读119次,点赞36次,收藏16次。小链表的尾节点指向大链表的第一个节点(不是指向哨兵位)https://blog.csdn.net/2301_79184587/article/details/134049599

1.2 代码

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


2. 链表的回文结构🪸

链表的回文结构_牛客题霸_牛客网

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


2.1 思路

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


2.2 代码

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
class PalindromeList {
  public:
    bool chkPalindrome(ListNode* A) {
        if (A == NULL) {
            return NULL;//空链表
        }
        ListNode* n1, *n2, *n3,*cur1,*cur2;
        n1 = NULL;
        n2 = A;
        n3 = A->next;
        while (n2) {
            n2->next = n1; 
            n1 = n2;
            n2 = n3;
            if (n3) {
                n3 = n3->next;//注意空指针
            }
        }
        cur1=A,cur2=n1;//比较
        while(cur1&&cur2)
        {
            if(cur1->val==cur2->val)
            {
                cur1=cur1->next;
                cur2=cur2->next;

            }
            else {
            return false;
            }
        }
        return true;
    }
};

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
class PalindromeList {
  public:
    bool chkPalindrome(ListNode* A) {
        if (A == NULL) {
            return NULL;//空链表
        }
        ListNode* slow,*fast;
        slow=fast=A;
        while(fast&&fast->next)
        {
            fast=fast->next->next;
            slow=slow->next;
        }
        ListNode* n1, *n2, *n3,*cur1,*cur2;
        n1 = NULL;
        n2 = slow;
        n3 = slow->next;
        while (n2) {
            n2->next = n1; 
            n1 = n2;
            n2 = n3;
            if (n3) {
                n3 = n3->next;//注意空指针
            }
        }
        cur1=A,cur2=n1;//比较
        while(cur1&&cur2)
        {
            if(cur1->val==cur2->val)
            {
                cur1=cur1->next;
                cur2=cur2->next;

            }
            else {
            return false;
            }
        }
        return true;
    }
};

3.相交链表🌪️

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


3.1 思路

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


3.2 代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {//遍历判断是否相交
  struct ListNode* cur1=headA;
  struct ListNode* cur2=headB;
  int count1=1,count2=1;
//长度都少一,但相减之后不影响--->但是要想计数准确,我们也可以从1开始计数
//不能用cur1和cur2遍历,因为我们要找到尾节点的地址判断是否相交,否则到cur1和cur2都为NULL的时候,循环结束,尾节点的地址就找不到了
  while(cur1->next)
  {
      count1++;
      cur1=cur1->next;
  }
    while(cur2->next)
  {
      count2++;
      cur2=cur2->next;
  }
  if(cur1!=cur2)
  {
      return NULL;
  }//到这里,就是相交了-->计算差值
  int D_value=abs(count1-count2);//假设法
  struct ListNode* longlist=headA,* shortlist=headB;
  if(count1<count2)
  {
      longlist=headB;
      shortlist=headA;
  }
  //长链表走差值+齐头并进
      while(D_value--)
      {
          longlist=longlist->next;
      }
      while(longlist!=shortlist)
      {
          longlist=longlist->next;
          shortlist=shortlist->next;
      }
  return longlist;
}

4.环形链表I🌊🛳️

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


4.1 思路

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


4.2 代码

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


4--->5过渡:拓展思考🧐💭

前提:带环链表

1.slow一次1步,fast一次2步,一定能相遇吗?

​​​​​​​​​​​​​​2.slow一次1步,fast一次3步,一定能相遇吗?

​​​​​​​​​​​​​​3.slow一次m步,fast一次n步,一定能相遇吗?

1.slow一次1步,fast一次2步,一定能相遇吗?

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c

​​​​​​​​​​​​​​2.slow一次1步,fast一次3步,一定能相遇吗?

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c

​​​​​​​​​​​​​​3.slow一次m步,fast一次n步,一定能相遇吗?

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


5.环形链表II🏥🚑

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


5.1 思路

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


5.2 代码

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


6.随机链表的复制👊🤡

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


6.1 思路


立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c


6.2 代码

/**
 * Definition for a Node.
 * struct Node {
 *     int val;
 *     struct Node *next;
 *     struct Node *random;
 * };
 */

struct Node* copyRandomList(struct Node* head) {
    if(head==NULL)
    {
        return NULL;
    }
    struct Node* cur=head;//插入到原链表
    while(cur)
    {
        struct Node* copy=(struct Node*)malloc(sizeof(struct Node));
        copy->val=cur->val;
        copy->next=cur->next;
        cur->next=copy;
        cur=cur->next->next;
    }
    cur=head;
    while(cur)
    {
        struct Node* copy=cur->next;
        if(cur->random==NULL)
        {
            copy->random=NULL;
        }
        else{
            copy->random=cur->random->next;
        }
        cur=cur->next->next;
    }
    cur=head;
    struct Node* newhead,* tail;
    newhead=tail=NULL;
    while(cur)
    {
        struct Node* copy=cur->next;
        struct Node* next=copy->next;
        if(newhead==NULL)
        {
            newhead=tail=copy;
        }
        else
        {
            tail->next=copy;
            tail=tail->next;
        }
        cur->next=next;
        cur=cur->next;
    }
    return newhead;
}

后语🍻

本次的分享到这里就结束了!!!

PS:小江目前只是个新手小白。欢迎大家在评论区讨论哦!有问题也可以讨论的!

如果对你有帮助的话,记得点赞👍+收藏⭐️+关注➕

立冬特辑-----链表OJ题优选合集~~,练习题,链表,数据结构,算法,链表OJ题,练习,c++,c文章来源地址https://www.toymoban.com/news/detail-755296.html

到了这里,关于立冬特辑-----链表OJ题优选合集~~的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 顺序表和链表的练习题

    该题目需要先对顺序表进行遍历至元素x正确插入位置,再对顺序表完成插入操作。因此涉及到for循环与if语句的使用 该题目需要对顺序表制定元素删除,并且还需要返回值。所以定义的函数接口不能为void类型,使用for循环对p后继顺序表元素进行遍历前移,且考虑可能出现删

    2024年04月22日
    浏览(48)
  • 【数据结构(四)】链表经典练习题

    ❣博主主页: 33的博客❣ ▶️文章专栏分类:数据结构◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵 关注我带你学更多数据结构知识 在上一篇文章中博主已经介绍了链表的基础知识,什么是链表,如何实现一个链表,以及LinkedList的操作方法,那么在这篇文章中通过一些链

    2024年04月22日
    浏览(45)
  • 头歌平台——C语言之链表练习题

    任务描述 本关需要你建立一个带头结点的单向链表。 相关知识 什么是链表?链表和二叉树是 C 语言数据结构的基础和核心。 链表有多种形式,它可以是单链接的或者双链接的,可以是已排序的或未排序的,可以是循环的或非循环的。 本关让我们来学习单链表。 单链表 单向

    2024年01月20日
    浏览(35)
  • 数据结构之链表练习与习题详细解析

    个人主页:点我进入主页 专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶 C语言刷题       数据结构初阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言 2.习题解析 2.1习题一 2.2习题二 2.3习题三 2.4习题四 2.

    2024年02月05日
    浏览(45)
  • 【Java练习题汇总】《第一行代码JAVA》综合测试三,汇总Java练习题

    线程的启动方法是( )。 A. run() B. start() C. begin() D. accept() Thread 类提供表示线程优先级的静态常量,代表普通优先级的静态常量是( )。 A. MAX_PRIORITY B. MIN_PRIORITY C. NORMAL_PRIORITY D. NORM_PRIORITY 设置线程优先级的方法是( )。 A. setPriority() B. getPriority() C. getName() D. setName() 下面 ( )方法是

    2024年02月14日
    浏览(50)
  • java -- 练习题

    1.定义一个Person类,要求有姓名和年龄,并且符合JavaBean标准,定义Student类继承Person,定义测试类,创建Student对象,要求创建Student对象的同时,指定Student对象的姓名为\\\"张三\\\",只能指定姓名不许指定年龄 2.按照以下要求定义类 3.键盘录入一个字符串,判断这个字符串是否是对称的字符串

    2023年04月09日
    浏览(38)
  • MySQL练习题(6)

    1、使用mysqldump命令备份数据库中的所有表   2、备份booksDB数据库中的books表 3、使用mysqldump备份booksDB和test数据库 4、使用mysqldump备份服务器中的所有数据库 5、使用mysql命令还原第二题导出的book表 6、进入数据库使用source命令还原第二题导出的book表 1、建立一个utf8编码的数据

    2024年02月16日
    浏览(38)
  • 【练习题】python列表

    1. 基础题 已知一个数字列表,打印列表中所有的奇数 已知一个数字列表,打印列表中所有能被能被3整除但是不能被2整除的数 已知一个数字列表,计算所有偶数的和 已知一个数字列表,统计列表中十位数是 1 的数的个数 已知一个列表,获取列表中下标为奇数是所有元素(从

    2024年02月05日
    浏览(45)
  • 【Python】基础练习题

    1)从random库中选取相应的函数,用蒙特卡罗方法(统计实验方法)求解pi。 2)一个笼中共有鸡和兔15只,它们的脚一共有40只,问有多少只鸡?有多少只兔? 3) “猴子吃桃”问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下

    2024年02月07日
    浏览(45)
  • C# 练习题

    26.   Enum(枚举) 27.class(类定义) 28.成员函数和封装 29.C#构造函数 30. 参数化构造函数 31.C# 析构函数  32.静态函数static 33. C# 继承   @学习来源于www.runoob.com

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包