我有這兩個結構正在構建一個鏈表:冒泡排序鏈表
struct Element {
int value;
struct Element *next;
};
struct List {
struct Element *first;
};
現在我想用排序冒泡排序的鏈表。我實現了sortList方法,它比較當前元素的值和下一個元素的值。如果下一個元素的值大於當前元素的值,則必須交換。但在這一刻它不能正常工作。
void sortList(List *list) {
Element *current = malloc(sizeof(Element));
current = list->first;
Element *nextElement = malloc(sizeof(Element));
nextElement = current->next;
Element *tmp = malloc(sizeof(Element));
tmp = NULL;
int changed = 1;
while (changed) {
changed = 0;
for (current; (current != NULL) && (nextElement != NULL);) {
if (current->value > nextElement->value) {
tmp = current->next;
current->next = nextElement->next;
nextElement->next = tmp;
changed = 1;
}
current = current->next;
nextElement = nextElement->next;
}
}
}
什麼是不工作?基本的方法似乎是有效的;不過我建議將交換操作移至單獨的函數。 – Codor 2014-12-03 14:53:09
該列表未正確排序。 輸入:1 4 3 2 6 輸出:1 4 2 6 3 – torhoehn 2014-12-03 15:20:45
實現是否能夠按錯誤順序對兩個元素進行排序? – Codor 2014-12-03 15:21:30