[問題] Linklist 不知道哪裡出了問題

看板C_and_CPP作者 (Lego)時間11年前發表 (2014/07/28 13:54), 11年前編輯推噓2(2011)
留言13則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) gcc 問題(Question): 我運用linklist建立queue 結構大概是有5個檔案 node.h node.c nodequeue.h nodequeue.c main.c 而 node.c inlcude node.h nodequeue.c include nodequeue.h nodequeue.h include node.h main.c include nodequeue.h 我的想法我覺得有點自找麻煩 規則大概是 我建立100個node 而我自認為我只能有這100個node 不能新增也不能刪除 而我的方法是先把這100個node建成linklist 然後先把avaliable指向第一個 最後一個指向NULL avaliable就是可以用的node 然後再藉由 getnode 以及 freenode 來控制哪些是可以用的node 然後再用這些可以用的node建立queue 可是不知道是哪裡出問題了 輸出不了我要的結果 錯誤結果(Wrong Output): compiler會過但 每次錯誤結果都不一樣 程式碼(Code):(請善用置底文網頁, 記得排版) https://gist.github.com/anonymous/9df04dec8f15f2a05e1e 有請各位幫我找問題 說不負責一點就是請大家幫我debug QQ 我de了快要一天都不知問題出在哪... 感恩 <(_ _)>! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.120.19.2 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1406555698.A.D05.html

07/28 22:21, , 1F
node的部份有寫錯吧...
07/28 22:21, 1F

07/28 22:24, , 2F
你傳的是"位址值"喔 所以呼叫的時候 p不會變~
07/28 22:24, 2F
麻煩大大可以說的詳細一點嗎@@ 我聽不太懂意思

07/28 22:30, , 3F
小弟才疏學淺,為什麼void initqueue(pq)與queue *pq;要
07/28 22:30, 3F

07/28 22:31, , 4F
分開寫呢? 有什麼好處嗎?
07/28 22:31, 4F
因為c沒有class我又不知該如何給他建構值所以就把該建構的東西寫在initXXX()裡面

07/28 22:41, , 5F
malloc @@?
07/28 22:41, 5F

07/28 22:42, , 6F
你應該只能有一個主串列 來insert
07/28 22:42, 6F

07/28 22:43, , 7F
實際上其他new Node都是call by value丟來這insert funct
07/28 22:43, 7F
我函式內的node *p指是用來控制那我說的100個node所以我在函式裡用完就可已捨棄了 然而只有一個主串列應該是我queue裡的front跟rear指像最前面跟最後的node 所以可以再說詳細一點嗎 我語言能力好差QQ

07/29 00:41, , 8F
int a; call_func(a); a存的值不會因call_func改變
07/29 00:41, 8F

07/29 00:42, , 9F
同理 node* p; getnode(p); p也不會因為getnode改變
07/29 00:42, 9F

07/29 00:46, , 10F
都是call by value
07/29 00:46, 10F
感謝解惑 那我要怎麼修改才能達到我預期的結果?

07/29 01:38, , 11F
有兩種方式 1.return p;的方式 2.用雙重指標
07/29 01:38, 11F
感謝firejox就是那道光! 現在東西都正常work了!

07/29 04:43, , 12F
我覺得...是時候該學學GDB了喔 :P
07/29 04:43, 12F

07/29 04:43, , 13F
你就用這個當作GDB的練習標的吧 遲早要學的
07/29 04:43, 13F
好的!我會的 謝謝你! ※ 編輯: qas612820704 (140.120.19.2), 07/29/2014 11:00:36
文章代碼(AID): #1JrbOoq5 (C_and_CPP)