[问题] 连结串行条件判别问题

楼主: huhunhiaccc (chchch)   2021-01-03 10:18:36
开发平台(Platform): (Ex: Win10, Linux, ...)
Dev c++
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
大家好
小弟最近在做liked list练习
跟阵列比较不一样的是阵列可以要检查特定的资料可以用for循环一个一个挑
但是linked list好像不行
下面那段function我想让x^1和x^0分别印为x和不印
以及系数若为1也不印出来
但是我在if(tmp==p->pNext)里又加了if..else if..else结构
虽然感觉笨笨的 但应该会正确执行 结果可以执行
但执行后却永远跑不完 数字也不太对
请问是为什么呢
喂入的资料(Input):
1x^4+2x^3+3x^1+4x^0
预期的正确结果(Expected Output):
x^4+2x^3+3x+4
错误结果(Wrong Output):
跳出一大堆数字
且一直跑不完
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
https://ideone.com/r0zGNM
补充说明(Supplement):
作者: nh60211as   2021-01-03 10:27:00
你一开始就tmp=p->pNext了,之后怎么比都会是true啊,抱歉当我没说
作者: poolongkong (普拢贡)   2021-01-03 11:37:00
把整个程式码贴到网站再丢上来应该比较好帮忙 不然我也满疑惑为什么要 tmp = p->pNext 理论上传进来的p 应该是 head 吧 或是只能猜你的 p 是假的 head为什么第 29 行分配了内存可是不使用 反而在第 30行又分配一次才使用理论上资料会从第一个 node 开始存 不会从第二个 除非你有什么特殊的用途或理由啊 忘记回文中的问题 你并没有对 exp 做任何判断 所以当然做不到你要的事
楼主: huhunhiaccc (chchch)   2021-01-04 00:58:00
因为我把第一个分配的当成head 所以第30行才是帮新增的资料新增一个内存,我试过在while里加入If elseif..if 来判断exp不过跑出无限循环的结果...
作者: firejox (Tangent)   2021-01-04 01:06:00
你是不是大括号没加
作者: LPH66 (-6.2598534e+18f)   2021-01-04 08:38:00
提一下上面有人问的假头问题, 这其实是有些 linkedlist 的设计...风格? 吧, 就是用一个假头去取代可能会变动的头指标
作者: alan23273850   2021-01-04 09:22:00
这种东西就是自己 debug 才有趣味,用纸笔 case bycase 讨论,数学归纳法论证。

Links booklink

Contact Us: admin [ a t ] ucptt.com