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;
14typedef ptrtonode list;
15typedef ptrtonode position;
1617
/*操作集
*/18
list makeempty( list l );
19bool
isempty( list l );
20bool
islast( position p );
21position first( list l );
22position header( list l );
23void
insert( elementtype x, list l, position p );
24void
deletelist( list l );
25position advance( position p );
26void radixsortlist( elementtype a, int n, int
p );
27void
printflist(list l);
2829
#endif
3031
32/*
介面實現
*/33 #include 34 #include 35 #include "
list.h"36
#define b 10
3738
/*特定結構宣告
*/39
struct
node40;
4445
/*獲取n的個位、十位、百位…具體位值由p指定。如,p = 1,取個位;p = 2,取十位。
*/46
int getwei( int n, int
p );
4748
/*獲取每個桶的尾部位置
*/49
position getlast( list l );
5051
list makeempty( list l )
5261 l->next =null;
6263
return
l;64}65
66bool
isempty( list l )67
7071
bool
islast( position p )
7275
76position header( list l )
7780
81position first( list l )
8285
86void
insert( elementtype x, list l, position p )
8795 temp->element =x;
9697 temp->next = p->next;
98 p->next =temp;99}
100101
void
deletelist( list l )
102
115}
116117
position advance( position p )
118121
122void radixsortlist( elementtype a, int n, int
p )123
150}
151}
152}
153154
position getlast( list l )
155163
else
if ( l->next ==null )
164168
else
169177
}178
179int getwei( int n, int
p )180
188189
return
result;
190}
191192
void
printflist(list l)
193206 printf("\n"
);207
}208 }
單鏈表實現基數排序
基數排序是通過 分配 和 收集 過程來實現排序 1 假設有欲排資料序列如下所示 73 22 93 43 55 14 28 65 39 81 首先根據個位數的數值,在遍歷資料時將它們各自分配到編號0至9的桶 個位數值與桶號一一對應 中。分配結果 邏輯想象 如下圖所示 分配結束後。接下來將所有桶中所盛資...
基數排序單鏈表實現 C語言
標頭檔案 基數排序,單鏈表實現 ifndef radix sort h define radix sort h include define flowover 1 define list empty 2 struct radixsort typedef struct radixsort list t...
c 實現基數排序
以下介紹內容 百科 基數排序的方式可以採用lsd least significant digital 或msd most significant digital lsd的排序方式由鍵值的最右邊開始,而msd則相反,由鍵值的最左邊開始。以lsd為例,假設原來有一串數值如下所示 73,22,93,43,...