链表的逆置

简介: 链表的逆置

前言


输入的是一条带有头结点的链表L 故头结点为L,第一个节点为L->next.


先上代码


void Reverse(LinkList *L)
{
    LinkList  *p,*q;
    p = L->next;
    L->next = NULL;
    while(p!=NULL)
    {
        q = p;
        p = p->next;
        q->next = L->next;
        L->next = q;
    }
}


讲解(摘自:链表逆置详细讲解(图文)


我们先看第一轮循环做了什么:

建议阅读顺序:黑色(初始)、蓝色(操作)、红色(理解)

网络异常,图片无法展示
|


第二轮:

建议阅读顺序:黑色(初始)、蓝色(操作)、红色(理解)


网络异常,图片无法展示
|


第三轮:


就是头插法


就是头插发


就是头插发


最后给一份带注释的代码~


void listReverse(linkedList &L)
{
  node *p,*s;
  //1.准备工作
  p = L->next;
  L->next = NULL;
  while(p)
  {
    //2.1 s记录正在处理的结点,p记录下一轮待处理的结点
    s = p;      //s承接上一轮记录的位置
    p = p->next;  //p为下一轮记录位置
    //2.2 把s插入 已逆置的部分 中
    s->next = L->next;  // L->next代表已逆置的第一结点,s的指针域指向它
    L->next = s;  //(头结点的指针域,即)第一结点 设置为s
    //2.2步骤相当于:
    //s 对 队伍(已逆置部分)的队首(已逆置的第一结点)说:你不要排在柜台前了,你排在我后面
    //等队伍排在s后面后,s自己排到了柜台前
  }
}

相关文章
数据结构实验之链表三:链表的逆置
数据结构实验之链表三:链表的逆置
|
4月前
链表5(考试用)7-5 sdut-C语言实验-链表的逆置
链表5(考试用)7-5 sdut-C语言实验-链表的逆置
26 0
|
5月前
|
算法
数据结构和算法学习记录——习题-翻转链表(不带表头结点逆置算法、带表头结点的链表逆置算法)
数据结构和算法学习记录——习题-翻转链表(不带表头结点逆置算法、带表头结点的链表逆置算法)
33 0
|
算法
大厂面试经典单链表例题(创建有序单链表,逆置单链表,判断链表是否有环,取链表中间节点)(含核心代码与解析)
大厂面试经典单链表例题(创建有序单链表,逆置单链表,判断链表是否有环,取链表中间节点)(含核心代码与解析)
带头结点的链表的逆置
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.
1006 0
|
机器学习/深度学习 DataX
单链表(二):如何实现单链表的排序、逆置(逆序)
<p>1、单链表的排序</p> <p>示例代码如下:</p> <p></p> <pre name="code" class="cpp">#include&lt;iostream&gt; using namespace std; ///单链表结构体:结点 typedef struct student { int data; //结点中的数据 struct st
3976 0
|
5月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
5月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
5月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
53 2
|
6月前
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
53 1