我有兩個字段,即ID和名稱。在鏈接列表中插入節點時,我想按ID降序排列它。假設不同的人可能有相同的ID。例使用鏈接列表排序
1001 CHARICE -> 1001 JUSTIN -> 1001 ANNA -> 1000 CHYNA -> 888 MIKEY -> NULL
的最終名單應該是這樣的:
1001 ANNA -> 1001 CHARICE -> 1001 JUSTINE -> 1000 CHYNA -> 888 MIKEY -> NULL
我而ID是按降序排列升序排列相同ID的名稱進行排序。這裏是我的代碼:
NODE* insert_std(NODE *head, NODE* std){
NODE *prev, *cur;
if(head==NULL) return std;
cur = head;
while (cur != NULL && std->ID < cur->ID){
prev = cur;
cur = cur->next;
}
if(std->ID == cur->ID){
while (cur != NULL && strcmp(std->name, cur->name)>=0){
prev = cur;
cur = cur->next;
}
}
if (head==cur){
if(std->ID >= head->ID) {
std->next = head;
head = std;
}
} else {
std->next = cur;
prev->next = std;
}
return head;
}
但就是不進行排序我想要的方式。我究竟做錯了什麼?
添加
&& std->ID == cur->ID
比較字符串使用'strcmp'(或POSIX'strcasecmp')。 – pmg 2010-12-15 17:02:20這一個將是有用的:http://en.wikipedia.org/wiki/Sentinel_node – ruslik 2010-12-15 17:38:58
請使用快速排序算法找到我的解決方案這個問題在http://stackoverflow.com/questions/11813696/sorting-a-鏈接列表中-C/15457283#15457283> – user1596193 2013-03-17 03:47:40