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

作者: qas612820704 (Lego)   2014-07-28 21:54:53
開發平台(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了快要一天都不知問題出在哪... 感恩 <(_ _)>!
作者: firejox (Tangent)   2014-07-28 22:21:00
node的部份有寫錯吧...你傳的是"位址值"喔 所以呼叫的時候 p不會變~
作者: Caesar08 (Caesar)   2014-07-28 22:30:00
小弟才疏學淺,為什麼void initqueue(pq)與queue *pq;要分開寫呢? 有什麼好處嗎?
作者: IhateOGC (我討厭)   2014-07-28 22:41:00
malloc @@?你應該只能有一個主串列 來insert實際上其他new Node都是call by value丟來這insert funct
作者: firejox (Tangent)   2014-07-29 00:41:00
int a; call_func(a); a存的值不會因call_func改變同理 node* p; getnode(p); p也不會因為getnode改變都是call by value有兩種方式 1.return p;的方式 2.用雙重指標
作者: Killercat (殺人貓™)   2014-07-29 04:43:00
我覺得...是時候該學學GDB了喔 :P你就用這個當作GDB的練習標的吧 遲早要學的

Links booklink

Contact Us: admin [ a t ] ucptt.com