單鏈表實現冒泡排序__資料結構
來源:互聯網
上載者:User
[cpp] view plain copy print ? /************************************************************************/ /* 用單鏈表實現冒泡排序,輸入為0-9的數字字元 */ /************************************************************************/ #include <stdio.h> #include <stdlib.h> #define PR printf //定義一個單鏈表結構體 typedef struct node{ long data; struct node * next; }lklist; //快速排序,小的資料往前排,後的資料往後排 lklist* sort(lklist * head) { if (head == NULL) return NULL; lklist* p = head->next; lklist* p_pre = p; bool flag = false; //用於標記是否有交換,當數組有序的時候,提高判斷效率 while(p_pre->next != NULL) { long temp = p_pre->data; p = p->next; while (p) { if(temp <= (p->data)) { p = p->next; continue; } else { long temp_change; temp_change = p->data; p->data = p_pre->data; p_pre->data = temp_change; p = p->next; flag = true; } if (flag == false) { return head; } } p_pre = p_pre->next; p = p_pre; } return head; }