c語言使用鍊錶時,有些時候會對鍊錶中的資料進行排序。下邊介紹使用鍊錶時可用的排序方法,氣泡排序和選擇排序。
此鍊錶排序僅對鍊錶中的資料進行排序,如果想進行對整個結構體的排序,也就是利用資料順序來調整節點中的資訊,需要對節點進行交換,但與此方法不同,望讀者周知。
node*
bubblesort
(node* head)
pfirst=pfirst->next;
} pend=pfirst;
//減少最後的已排好的迴圈
pfirst=head;
}return head;
}
/*鍊錶的選擇排序*/
node*
selectsort
(node* head)
pfirst=pfirst->next;
} psecond=psecond->next;
pfirst=psecond;
}return head;
}
/*
*鍊錶排序 writen by yu
*/#include
#include
/*結果輸出檢視*/
void
endscan()
/*結構體*/
struct node
;typedef
struct node node;
//把struct node 定義為 node
int count =0;
/*建立鍊錶並輸入資料*/
node*
creat()
else
//如果不是頭結點
pnew=
(node*
)malloc
(sizeof
(node));
scanf
("%d"
,&pnew->date);}
free
(pnew)
;return phead;
}/*輸出鍊錶*/
void
print
(node* head)
}/*鍊錶的氣泡排序*/
node*
bubblesort
(node* head)
pfirst=pfirst->next;
} pend=pfirst;
//減少最後的已排好的迴圈
pfirst=head;
}return head;
}/*鍊錶的選擇排序*/
node*
selectsort
(node* head)
pfirst=pfirst->next;
} psecond=psecond->next;
pfirst=psecond;
}return head;
}int
main()
C語言 鍊錶排序
最近總結了一下針對只有頭結點的單鏈表進行排序的幾個簡單的方法。交換節點 插入排序,氣泡排序,簡單選擇排序 交換資料 快速排序 include include include 節點結構 struct node typedef struct node node,list 列印函式 void printl...
鍊錶的基本排序 C語言
程式都是針對有頭結點的鍊錶進行排序 1.插入排序 需要用兩個指針對鍊錶進行遍歷,乙個指標用於標記待插入的節點 外迴圈 另乙個指標用於尋找插入位置 內迴圈 因為需要進行節點的刪除與插入,因此對用於遍歷的兩個指標,還需要再新增兩個前驅指標。node insertsortlist node l retur...
C語言 雙向鍊錶的快速排序
之前一直想用雙向鍊錶來快排,想像陣列快排一樣給第乙個陣列下標 第乙個有值節點的指標 和最後乙個陣列下標 最後乙個有值節點指標 結果執行時經常有問題,程式有時會出錯,於是紙上演算了幾次發現會訪問到未知的記憶體.因為當low和high在最左側或者最右側相同時,再經過一次呼叫時 box qsort i,l...