→ vvrr: 用gcc 4.8.2在Ubuntu下執行是正常的@@ 05/10 18:44
→ vvrr: 順帶一提,這樣子如果輸入「0」的話也會跳出迴圈哦.. 05/10 18:44
推 longlongint: 對不起 我看不懂原po的程式 05/11 04:32
→ scwg: 在 do{ 裡面宣告的 list *sort_list 遮住了外面的定義, 選個 05/11 05:04
→ scwg: 不同的名字, 然後讀書看 linked list 怎麼插入元素 05/11 05:04
→ nobodyuse: 這是一個未完成的程式,主要是要以指標方式儲存資料 05/11 08:27
→ nobodyuse: do while 迴圈會多增加一個list *sort_list是因為gcc編 05/11 08:29
→ nobodyuse: 譯時會出現sort_list undeclared (first use in this 05/11 08:30
→ nobodyuse: function)的錯誤訊息,這是讓小弟感到奇怪的地方。 05/11 08:31
→ nobodyuse: 但是列印sort_list->data,不論是按下ENTER與0其顯示值 05/11 08:32
→ nobodyuse: 都是0,只是納悶為何跳不出迴圈? 05/11 08:33
→ nobodyuse: 另外,若不以指標方式而修改宣告為list sort_list,並 05/11 08:34
→ nobodyuse: 將所有的sort_list->data改為sort_list.data則可正常執 05/11 08:35
→ nobodyuse: 行,可以跳脫do while迴圈,小弟也曾懷疑是否以指標方 05/11 08:36
→ nobodyuse: 在迴圈中print出sort_list->data值確定為0,因此不知 05/11 08:38
→ nobodyuse: 跳不出迴圈,不知小弟的觀念上哪裡出了問題?感謝各位 05/11 08:39
推 qsort: 你的compile是哪一個? 05/11 09:56
→ qsort: do while的sort_list scope,只限在do while內 05/11 09:56
→ qsort: 而while (sort_list->data) 的sort_list, 其實是用buffer下 05/11 09:57
→ qsort: 面的那一個,也就是一個uninitialized sort_list 05/11 09:58
→ vvrr: 0rz我第一次compile的時候也有出現那個錯誤 修掉後忘記了.. 05/11 11:05
→ vvrr: 沒注意到就推文說沒有問題@@...抱歉 05/11 11:06
→ nobodyuse: 感謝vvrr協助解決... 05/11 11:50
→ nobodyuse: 將do while內部list *sort_list=(list *)malloc(xxxx) 05/11 11:51
→ nobodyuse: 拿掉list *即可正常work...感謝各位!! 05/11 11:51