Re: [問題] generalized list廣義串列跑不出結果
※ 引述《supercygnus (......)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: DEV C++
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: 問題(Question):
: 廣義串列建好之後,想把第一個節點的字元印出來可是結果不正確,很怪
: 到底哪裏出問題啊~? 還有要怎麼列出整個串列呢~??
: 餵入的資料(Input):
: (a,b,(g))
: 預期的正確結果(Expected Output):
: a
: 錯誤結果(Wrong Output):
: 程式碼(Code):(請善用置底文網頁, 記得排版)
: http://ideone.com/RPmF4e
你程式有些地方,看不懂你做了什麼. 像12-15行,
union{
char data;
ListNode *dlink;
};
說data和下一個節點的連結是同一個東西. 我想你應該不會這樣用吧.
但一看92行
p->data=x-48;
然後100行
q=p->dlink;
然後
free(p);
return q;
你拿到的q是個什麼東西?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.167.52.241
推
11/08 22:19, , 1F
11/08 22:19, 1F
→
11/08 22:20, , 2F
11/08 22:20, 2F
→
11/08 22:20, , 3F
11/08 22:20, 3F
→
11/08 22:21, , 4F
11/08 22:21, 4F
→
11/08 22:22, , 5F
11/08 22:22, 5F
OK! 你做得很接近. 還需理解 (a,b,(c)) 這一串符號的意思.
像這樣的general list,其中 '(' 可想成是呼叫一個 begin_of_a_list(...) 函數,
相對 ')' 就是 end_of_a_list(...) 至於 '(', ')', ',' 這些結構符號都要丟掉,
因為 linked structures 已經表達了 (a,b,(c)) 中的資料和結構.
你的ListNode定義就是
struct ListNode {
ListNode *next;
bool is_ref; //指明本結構是包含一筆資料或是參考到另一個串列
union {
char data;
ListNode *ref;
};
};
這樣子做,正確. 另外,所謂data也有很多種類,起碼可以區分是數值還是符號.
至於你的 create(...) 函數, 指標 p 既然是遊動指標,相對 q 就是固定指標指向
此陣列的開頭了. 一開始加個 q = p 並且之後都不要動 q, 應該就可以. 至於尾端
有 free(p) 蠻奇怪的,這個函數就是要生資料結構出來,沒什麼事不會把自己的結構
砍掉.
※ 編輯: yauhh 來自: 118.167.52.241 (11/08 23:20)
討論串 (同標題文章)