Re: [問題] 以quicksort實現linked list的排序...

看板C_and_CPP作者 (JON)時間13年前 (2010/11/25 13:51), 編輯推噓0(004)
留言4則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《chizhang (JON)》之銘言: : 遇到的問題: (題意請描述清楚) : 若限定函式, 以quicksort對linled list排序 : tydefdf struct node{ : int data; : struct node *next; : }NODE; : NODE *quicksort(NODE *list) : { : ????? : } : 希望得到的正確結果: : 有試著撰寫, 但就是怪怪的 : 程式跑出來的錯誤結果: : 是有成功的樣子, 但感覺就是怪怪的 : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : Dev-C++ : 有問題的code: (請善用置底文標色功能) : 以下是我所寫的程式碼 : : NODE *quicksort(NODE *list) : { : NODE *left, *right, *last; : POLY_NODE *p; : int i = 0; : if(list == NULL) : return list; : else : { : left = right = list; : last = left; : } : while(right->next != NULL) : right = right->next; : for(p = left->next; p != NULL; p = p->next) : { : if(p->data < left->data) : { : last = last->next; : SWAP(last->data, p->data); : i++; : } : } : SWAP(left->data, last->data); : ________________________________________ | | | if(i != 0) | | left = NodeQsort(left); | | if(last != right) | | last = NodeQsort(last->next); | |________________________________________| 原程式... : : return list; : } : 補充說明: : 希望能給予指教 : 或是有夠好的寫法 : 感謝 現將框框裡的程式碼改為 if(left != last) left = NodeQsort(left); else if(right->data > last->data) left = NodeQsort(last->next); 想了一晚, 不知道有沒有比邏輯?? 另外感謝 loveme00835 大大幫忙寫了一個程式 只是題目要求, 所以函式的 return type 與引數的部分都已經限定 不國, 還是很感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.219.228.160 ※ 編輯: chizhang 來自: 61.219.228.160 (11/25 13:52)

11/25 13:53, , 1F
想了一晚...囧 是甚麼人生大事嗎
11/25 13:53, 1F
※ 編輯: chizhang 來自: 61.219.228.160 (11/25 13:56)

11/25 15:31, , 2F
NodeQsort 到底是什麼東西?
11/25 15:31, 2F

11/25 16:05, , 3F
簡單來說, 你並沒有 divide & conquer 遞迴排序子串列
11/25 16:05, 3F

11/25 16:06, , 4F
啊~ 就是quicksort() 太疏忽了...
11/25 16:06, 4F
文章代碼(AID): #1CxVbuoy (C_and_CPP)
文章代碼(AID): #1CxVbuoy (C_and_CPP)