-1
下面是我班一個小鏈表的挑戰,我們需要定義一個函數我的鏈接列表代碼出現錯誤,任何人都可以幫助我檢查哪裏出錯?
void restoreSorted(intListEntry * &)
其中intListEntry是一個結構
struct intListEntry {
int i; // The int value we want to store in this entry
intListEntry *next; // Address of the next entry in the list
};
的參數是整數鏈表的頭按照非遞減順序排序,但不包括一個條目。該功能應該恢復列表排序不減少。例如,作爲論點給出; head - > -12 - > -12 - > 0 - > -1 - > 12 - > 122,從restoreSorted()返回時,列表應該是:head - > - > 12 - > -1 - > 0 - > 12 - > 122
這裏是我的代碼:
void restoreSorted(intListEntry * &root) {
intListEntry *conductor = root;
intListEntry *checker;
while (conductor->next != NULL) {
if (conductor->i > conductor->next->i) { //detect which one is out of place
checker = conductor;
intListEntry *checker2 = conductor->next;
int temp;
while (checker->i > checker2->i) {
temp = checker->i; //start of swapping value
checker->i = checker2->i; //until it is in the right order
checker2->i = temp;
checker = checker2;
checker2 = checker2->next;
}
break;
}
conductor = conductor->next;
}
然而,有五個測試案例,我只通過其中之一。我一遍又一遍地檢查它,但在代碼中仍然找不到任何錯誤。
但我看到的是結果列表進行排序。你能詳細說明一下嗎? –
如果root爲NULL,您的代碼將會出現段錯誤。順便說一下,爲什麼不使用STL列表? – OznOg
重新調整鏈接比改變值不是更好嗎? –