c++单链表逆置内存结构分析
新建一个单链表l内存结构如图:
可见是带有3个node的list.
现在分析其逆置过程的内存结构变化,c++源码如下:
void reverse_4(list& l) {node* a = l.next;node* b = NULL;while (a->next != NULL){b = a->next; //-->①a->next = b->next; //-->②b->next = l.next; //-->③l.next = b; //-->④}
}
程序执行到①时的内存结构如图:
可见此时l的结构无变化,a截获了l.next,b截获了a->next,此时三者的结构为: a=0-1-2-N,b=1-2-N,l-0-1-2-N.
当程序执行到②时的内存结构如图:
可见将a->next与b->next嫁接的时候,l的第二个node也被影响,此时三者的结构变为: a=0-2-N,b=1-2-N,l-0-2-N.
当程序执行到③时的内存结构如图:
当程序执行到④时的内存结构如图:
可见这时候l.next=b=1-0-2-N.即一次循环得到的链表头节点结构只完成了前两个节点的逆置,且a->next->next=NULL,需要再循环一次完成全部逆置.
接下来第二次循环:
①:a=0-2-N,b=2-N,l.next=b=1-0-2-N
②:a=0-N,b=2-N,l-1-0-N //ab嫁接过程,l再次重新链接
③:a=0-N,b=2-1-0-N,l-1-0-N //已经完成三个节点的逆置
④:a=0-N,l.next=b=2-1-0-N //返回l的逆置,第二次循环结束
c++单链表逆置内存结构分析相关推荐
- c语言借助栈单链表逆置,借助栈实现单链表逆置--数据结构
标题: 借助栈实现单链表逆置 时 限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 描述: 用链式存储实现栈的初始化.入栈.出栈.取栈顶.判栈空等操作,在主函数中借助栈的基本 ...
- 7-14 单链表基础应用(4)--单链表逆置
作者 chenmin 单位 福建工程学院 编程实现一个简易学生信息管理系统,按如下步骤分别用自定义函数实现: (1) 根据输入信息创建单链表并输出所有结点信息.每个学生的信息包括姓名和成绩: (2) ...
- 借助于栈结构将一个单链表逆置
借助于栈结构将一个单链表逆置. 输入输出样例:1组 #1 样例输入: 5 //链表中有几个元素 1 2 3 4 5 //链表中的元素分别是什么 样例输出: 5 4 3 2 1 //逆置后输出,利用栈结 ...
- C语言实现不带头结点的单链表逆置的三种方法
C语言实现不带头结点的单链表逆置的三种方法 直接循环 头插法 递归法 END! 直接循环 图片解释 ListNode* ReverseList1(ListNode *head) {if(head == ...
- 7-4 单链表基础应用(4)--单链表逆置
编程实现一个简易学生信息管理系统,按如下步骤分别用自定义函数实现: (1) 根据输入信息创建单链表并输出所有结点信息.每个学生的信息包括姓名和成绩: (2) 将上一步创建的单链表逆置后并输出所有结点信 ...
- 单链表逆置:空间复杂度O(1)
带头结点单链表逆置 从链表(带头结点)首个数据结点开始,重新头插法建表,将节点链接到头结点上 //单链表结点结构 typedef struct LNode {int data;struct LNode ...
- 单链表操作10-带头结点的单链表逆置(个人学习笔记,仅供参考)
带头结点的单链表逆置 题目要求 单链表结点定义 函数接口定义 测试程序样例 输入样例 输出样例 答案 题目要求 设计算法Reverse( ),将带头结点的单链表A逆置,要求利用原有链表的链点,最后输出 ...
- java数据结构之单链表逆置算法
单链表逆置算法1 设计思想:在链表类中新加成员方法getNode(int i),用来获取指定位置的节点,新建一个空单链表,将原链表的每个节点按照从后往前的顺序依次取出,再把节点的数据依次添加到新的链表 ...
- 数据结构:单链表逆置
实验要求: 写出将单链表逆置的算法.即令单链表的第一个结点变为最后一个结点,第二个结点变为倒数第二个结点,-,最后一个结点变为第一个结点. 依次从键盘读入数据,逆序建立链表L: 逆置链表L(创建新的链 ...
最新文章
- 小白的.Net Core 2.0 ConsoleApp入门(keng)指南(一)
- 8.MYSQL:触发器的使用[TRIGGER]
- ActionBarSherlock ViewPagerIndicator
- Windows 2003系统下桌面清理向导
- php cli 判断,php cli 命令行详解【转】
- 【Java】矩阵乘法的朴素算法
- MTK驱动开发(44)---如何对GPS下达清除辅助资讯的command
- 在此iphone上尚未受信任_来自苹果这样的电话千万别接,不然 iPhone 没了...
- python多分类画roc曲线_利用python制作ROC曲线进行多分类
- Win10系统装载ISO出现问题的解决方案
- COSCon'20 Apache Roadshow- China 精彩收官 | 数据篇
- MatLab的排序函数-sort
- 大型公司网路架构浅谈
- 人体模型 java代码_java3d人体模型.doc
- python爬微信公众号教程_python爬搜狗微信获取指定微信公众号的文章
- 诗词对仗常用字表(笠翁对韵)
- android软键盘和导航栏冲突,Android透明状态栏和软键盘配合的坑
- Android热修复Tinker原理分析
- 26岁那年,我创业了
- 跟海外大牌正面PK,中国品牌如何出圈?
热门文章
- 《随性集》:夜宴北城遇雨
- 计算机下方如何添加启动项,win7应用程序添加到开机启动项的两种解决办法
- 教你自由裁切每段视频的画面,横竖屏都支持
- 【日志】伯特兰-切比雪夫定理的小应用
- ARM编程中B指令与BL指令的区别
- c语言 10 -n次方,【零基础搞定C语言——10】
- 邮件设置 ssl://smtp.exmail.qq.com:465 can not connect to the SMTP server
- 吉他入门第二讲~~~~~左手弹奏基础
- RichView TRVStyle ParaStyles
- node_modules\node-sass: Command failed.错误解决