链表的逆置

您所在的位置:网站首页 单链表逆置讲解 链表的逆置

链表的逆置

2024-07-15 06:50| 来源: 网络整理| 查看: 265

前言

输入的是一条带有头结点的链表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; } } 讲解(摘自:链表逆置详细讲解(图文))

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

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

第二轮:

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

第三轮:

就是头插法 就是头插发 就是头插发 最后给一份带注释的代码~ 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自己排到了柜台前 } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3