三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

DAY .2 数据结构之反转链表2.牛客网BM2

DAY .2 数据结构之反转链表2.牛客网BM2

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、链表内指定区域间反转
  • 二、使用步骤
    • 1.代码
    • 2.解释
  • 总结

前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、链表内指定区域间反转

二、使用步骤

1.代码

代码如下(示例):

structlistnode*reversebetween(structlistnode*head,intleft,intright){structlistnode*dummy=(structlistnode*)malloc(sizeof(structlistnode));dummy->next=head;structlistnode*pre=head;for(inti=1;i<left;i++){pre=pre->next;}structlistnode*cur=pre->next;structlistnode*next;for(inti=0;i<right-left;i++){

2.解释


咱们用例子:1 → 2 → 3 → 4 →5,反转 2~4
pre=1,cur=2

  1. next = cur->next;
    把 cur 后面那个节点 先抓出来存好
    例子:cur=2,next=3
  2. cur->next = next->next;
    让 cur 跳过 next,直接连到后面
    例子:2 直接连到 4
    作用:把 next(3)从链上摘下来
  3. next->next = pre->next;
    把摘下来的 next,插到 pre 后面、区间最前面
    例子:3 的 next 指向 2
    现在变成:1 → 3 → 2 → 4 →5
  4. pre->next = next;
    pre 正式连接新的头节点
    例子:pre=1 指向 3

总结

提示:抓后面->摘下来->插最前->连好头

← 返回列表