24王道数据结构课后题习题代码题编程题逐题精讲与C语言实现~

作者: 北街学长分类: 校园学习 发布时间: 2021-05-29 15:01:14 浏览:359442 次

24王道数据结构课后题习题代码题编程题逐题精讲与C语言实现~

觅雪寻鹿:
up,我想问一下 void R_Print(LinkList L){ if(L->next!=NULL){ R_Print(L->next); } if(L!=NULL) print(L->data); } void R_Ignore_Head(LinkList L){ if(L!=NULL) R_Print(L->next); } 这段代码怎么理解?我递归算法好难理解。我自己的解释是这样的,但是感觉并不能体现出代码的意义 如果头结点的下一个结点不为空,则进行递归,继续指向下一个结点; 如果头结点不为空,则输出头结点的数据元素; 如果头结点不为空,则进行递归,继续指向下一个结点; 递归寻找到最后一个结点,这一点可以理解,但是怎么从尾到头输出?代码中可能是体现出来了,但是我不能是哪一句,看不懂递归代码。up能不能根据这个情况给一些帮助?[大哭]

【回复】这个其实不难理解,需要模拟一下递归的流程,你也知道递归到了最后一个节点,此时不满足递归条件,即当前节点的下一个节点为空,就会打印当前节点,注意打印之后,这一层的递归结束,会退栈,回到上一层递归中,即刚刚打印节点的上一个节点,继续打印,以此类推,直至所有压栈的递归程序退出,链表也就逆序输出了。不知道你能否理解[微笑]
【回复】回复 @北街lhy :递归到了最后一个结点之后,递归结束,打印当前结点为最后一个结点;然后回到上一个结点,继续打印。是这个意思吗? 递归到最后一个结点之后递归结束,退栈操作是自动完成的吗?这段代码涉及了栈的算法吗?我还没看到栈[tv_流泪]
【回复】回复 @萬物有靈-animism :是自动完成的,递归的过程其实就是一个压栈的过程,我后续的视频有断点调试递归,可以很很直观的看到递归的压栈过程退栈过程,你可以去瞅瞅
wter:
关于链表第24题,求环入口部分,可以这样理解,王道书上图,是顺时针走的。不论fast比slow多走多少圈,最后和a相关的是最后一圈。最后一圈是x(相交点到入口点长度)+a(头结点到入口长度)=r(圈长),且是顺时针走的。也就是从相遇点顺时针走a,而从头走a也就到了,相交点。 王道的书,还是不详细,好歹标一下方向啊,估计一批人都去走x了

【回复】感谢,你这么一讲可算让我给绕明白了
北街学长:
大家有任何还不理解或者我讲错的地方,欢迎与我进行探讨哈,我们一起进步!!![打call][打call][打call]

【回复】回复 @无限月读AI :我用阿里云盘分享了「数据结构电子版」,你可以不限速下载🚀 复制这段内容打开「阿里云盘」App 即可获取 链接:https://www.aliyundrive.com/s/tVGHgFg6UE9
【回复】up能不能发一下电子版的教材,救救孩子吧[笑哭][笑哭]
【回复】这个题带头节点和不带头节点有区别吗?
日光下的大白羊:
顺序表第13题,即使有大于数组长度的数也不影响查找第一个未出现的最小正整数,比如数组长度为8,其中一个数组元素为10,10占用了一个数,还有7数,而7个数是没办法填满8个位置的,至少会出现一个既在数组长度范围内又没有出现的最小正整数。A【8】={1,2,3,4,5,6,7,10}。10不会被传入辅助数组,辅助数组a【7】就不会被赋值。

【回复】想了好久 也查了好久 终于解决了 谢谢你 陌生人!
橡树爸爸:
我觉得UP主有偿讲课没问题,支持你![支持]

潜龙禧夷:
up讲的挺好的,希望加油更新[打call][tv_点赞]

幸福的Jerry:
你这是给自己在拉对手,不过我就是喜欢你这种不怕死的[打call]

【回复】成功把你拉过来了哇[吃瓜]
光影风云:
void R_Print(LinkList L){ if(L->next!=NULL){ R_Print(L->next); } if(L!=NULL) print(L->data); } void R_Ignore_Head(LinkList L){ if(L!=NULL) R_Print(L->next); } up,我想问一下。 void R_Ignore_Head(LinkList L){ if(L!=NULL) R_Print(L->next); } 这段代码有什么用?前面不是已经递归完成然后逆序输出了吗?那后面的那段不就没用吗?

【回复】回复 @铁酱o :相当于就是把第一个有值得节点传进去,然后逆序打印
【回复】回复 @北街lhy :但这不是忽视头结点的意思吗 就是不要记录头结点的值 是怎么跳过头结点的呀 不明白
【回复】回复 @北街lhy :明白了,谢谢up[给心心]
我说啥就是啥zzz:
顺序表第三题可以简化成这样吗: void Delete_x(SeqList &L, ElemType x){ int j = 0;//新位序 for(int i=0;i<L.length;i++){ if(L.data【i】 != x){ L.data【j】 = L.data【i】; j++; } } L.length = j; }

小楽爱吃肉:
顺序表第一题没有返回被删除元素的值[doge]

vvGaara:
up主牛逼啊,虽然已经买了王道的习题讲解,但是里面讲解大多也就讲个思路,看代码还是看up看的明白些![打call]

Lohas-h:
Up,考研编程大题需要写成可运行的代码吗,结构体,简单函数,甚至头文件需要都写上吗?

【回复】不需要不需要,直接写函数即可,这里只是为了能够运行不得不写
【回复】回复 @无敌小破孩i :直接用
【回复】回复 @北街lhy :那例如树的非递归遍历的时候,利用栈的时候,出入栈的话,直接用出入栈函数可以不写出具体内容吗?
深夜与清晨:
顺序表十四题没有讲解吗?还想看那个的

左灯右行_-:
up主,有个问题请教一下,顺序表第三题,你函数的数组不是全局变量,函数传出来的是个k,那改变的数组是怎么传出来的

【回复】这里的数组我们传入的是它的首地址,通过这样的方式,函数里面的所有操作都相当于在原数组中进行的。
【回复】也就是我看你好多函数都是传了个数组长度出来,最后为什么能打印完整数组
你的璀璨星河:
up有想法建一个群嘛,一块讨论多方便。坐等。。。

上校QAQ:
单链表第十五题,这道题是不是应该用头插法啊,题目的意思是新A是一个递减有序的单链表,你这里用的尾插。

【回复】嗯嗯应该用头插法,自己注意一下哈,谢谢提醒!

知识分享官 考试 经验分享 队列 图 链表 二叉树 学习心得 一起上岸吧 顺序表

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

更多相关阅读