標頭檔案:
/*基數排序,單鏈表實現*/
#ifndef radix_sort_h
#define radix_sort_h
#include #define flowover -1
#define list_empty -2
struct radixsort;
typedef struct radixsort * list;
typedef struct radixsort * node;
typedef int element;
struct radixsort
;list createlist(void);//建立空表,返回表頭位址
bool islast(node n);//檢測輸入節點是否為表尾,是返回true
bool isempty(list l);//檢測輸入表是否為空,是返回true
list destroylist(list l);//刪除表並釋放記憶體
void addnode(list l, element e);//在表尾加入資料域為e的節點
void movenode(list l1, list l2);//將表l2中的頭節點移動成為l1的尾節點
void printlist(list l);//從第乙個節點開始輸出表中資料
#endif
實現檔案:
#include #include #include #include "radix_sort.h"
list createlist(void)
bool islast(node n)
bool isempty(list l)
list destroylist(list l)
return null;//防止表頭l成為野指標
} void addnode(list l, element e)
void movenode(list l1, list l2)
void printlist(list l)
printf("\n");
}
測試檔案:
#include #include #include "radix_sort.h"
int main()
for(i = 0; i < 3; i++)
for(j = 0; j < 10; j++)
printf("經過第%d輪排序,單桶中資料序列為:", i + 1);
printlist(sortlist); }
return 0;
}
單鏈表實現基數排序
1 2 單鏈表實現基數排序3 45 介面標頭檔案 6 typedef int elementtype 78 ifndef list h 9 define list h 10 include 11 12struct node 13 typedef struct node ptrtonode 14typ...
單鏈表實現基數排序
基數排序是通過 分配 和 收集 過程來實現排序 1 假設有欲排資料序列如下所示 73 22 93 43 55 14 28 65 39 81 首先根據個位數的數值,在遍歷資料時將它們各自分配到編號0至9的桶 個位數值與桶號一一對應 中。分配結果 邏輯想象 如下圖所示 分配結束後。接下來將所有桶中所盛資...
c 實現基數排序
以下介紹內容 百科 基數排序的方式可以採用lsd least significant digital 或msd most significant digital lsd的排序方式由鍵值的最右邊開始,而msd則相反,由鍵值的最左邊開始。以lsd為例,假設原來有一串數值如下所示 73,22,93,43,...