[问题] 链结串行,加入新节点在头端

楼主: s890269 (赛)   2019-04-14 18:19:11
开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
VC++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
我创建了一个初始串行,其内容为1->2->3->nullptr
然后想新增一个新的串行在初始串行的头端,
预期的结果为0.5->1->2->3->nullptr
我试了两种打法,一种是使用副函式的形式,另一种则是直接打在主函式内
在主函式内成功,并且印出串行为0.5->1->2->3
但在副函式内完成,印出的串行却是1->2->3
想请问一下问题在哪里?
喂入的资料(Input):
链结串行 1->2->3->nullptr
预期的正确结果(Expected Output):
0.5->1->2->3
错误结果(Wrong Output):
1->2->3
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
撰写在主函式内
https://ideone.com/Uq3MFP
撰写在副函式内
https://ideone.com/RPwGvy
补充说明(Supplement):
作者: b0920075 (Void)   2019-04-14 18:41:00
这两个code不是一样吗....?还是我眼花了
楼主: s890269 (赛)   2019-04-14 19:23:00
我刚刚发现贴错了,现在已经修改程式码连结了
作者: firejox (Tangent)   2019-04-14 19:25:00
你那是传指标值,需要有return 指标
作者: sarafciel (Cattuz)   2019-04-14 19:41:00
insert_head(node *list) -> insert_head(node *&list)
楼主: s890269 (赛)   2019-04-14 20:24:00
感谢大家帮忙,f大和s大的方法都可以,但我有试过在中间插入节点,参数用node*即可,是因为对开头做修改的差别?
作者: sarafciel (Cattuz)   2019-04-14 20:41:00
精确点讲 你原本的写法是把开头指标复制一份 然后修改到复制的那一份指标 所以原本的那个指标没有被影响而他们后面指到的东西你并没有复制 所以在后面作插入会两边都看到
作者: gaexpa066454 (玄)   2019-04-15 20:32:00
你的head指向哪?
作者: Gway (我爱的你 也爱我 好吗?)   2019-04-16 17:46:00
请传list 的address 给 fun 因为你只传pointer 会是call byvalue 传递

Links booklink

Contact Us: admin [ a t ] ucptt.com