基於單鏈表的基數排序,結構應該算挺簡單的,容易懂

2021-09-29 15:41:31 字數 1148 閱讀 4617

下面是**,乙個收集和乙個分配

問題在於收集和分配的集合無法再次利用,望大佬疏通一下脈絡,太晚就先睡了,明天在想

#include

#include

#include

typedef

struct lnod lnod;

//分配方法

void

distrusort

(lnod *p,lnod *f[10]

,lnod *e[10]

,int x);}

;//收集方法

void

peioption

(lnod *p,lnod *f[10]

,lnod *e[10]

);};

free(&

*f);

//free(&

*e);//}

;int

main()

;int m=0;

//初始話需要排序的資料

for(i=

0; iint h=1;

//位數的標識

lnod *pi;

for(h=

1; h<=

3; h++);

pi=p;

while

(pi->next!=

null);

printf

("\n");

};};

*優化*

對於每次重複呼叫收集和分配集合不需要再重新申請空間

- 只需要在收集時,只需要把分配的頭指標初始化。

**for

(i=0

; i<

10; i++);

};- 最後在重複收集和分配時把f[

] e[

] 集合的指標的下乙個指標都置為空

** distrusort(&

*p,&

*f,&

*e,h)

;peioption(&

*p,&

*f,&

*e);

//把儲存資料結果再次清空

//這裡置為空,不需要在重新分配新的記憶體

for(i=

0; i<

10; i++

);

單鏈表實現基數排序

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的桶 個位數值與桶號一一對應 中。分配結果 邏輯想象 如下圖所示 分配結束後。接下來將所有桶中所盛資...

基於單鏈表實現的桶排序

1.問題描述 使用桶排序演算法對控制台輸入的數字進行排序 2.桶排序涉及到幾個問題 1.桶的大小,這裡我們可以根據輸入的元素的個數來確定桶的大小 2.怎麼確定當前元素進入哪乙個桶,這裡我們使用到的是通過乙個雜湊函式來進行計算 element為當前元素的值,length為桶的大小,max為陣列中最大元...