[問題] 連結串列條件判別問題

作者: 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