單鏈表實現基數排序

2022-04-28 22:33:22 字數 2315 閱讀 7968

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,...