請教兩個C語言資料結構與演算法的問題,請看圖,謝謝了

時間 2021-08-11 17:49:52

1樓:匿名使用者

#include

#include

int c = 0;

//int arr = ;

int store[15];

int hash(int a, int len, int key)

int count_sort(int a, int len)

; // base 0, 1, 2,... 10;

int i;

target = malloc(len * sizeof(int) + 1);

for (i = 0; i < 10 + 1; i ++)

c[i] = 0;

for (i = 0; i < len; i ++)

c[a[i]] ++;

for (i = 0; i < 10 + 1; i ++)

c[i + 1] += c[i];

for (i = len - 1; i >= 0 ; i --)

target[c[a[i]]--] = a[i];

for (i = 0; i < len; i ++)

a[i] = target[i + 1];

free(target);

return 0;}/*

* b[i] = a[i] % m;

*/int count_sort2(int a, int b, int len)

; // base 0, 1, 2,... 10;

int i;

target = malloc(len * sizeof(int) + 1);

for (i = 0; i < 10 + 1; i ++)

c[i] = 0;

for (i = 0; i < len; i ++)

c[b[i]] ++;

for (i = 0; i < 10 + 1; i ++)

c[i + 1] += c[i];

for (i = len - 1; i >= 0 ; i --)

for (i = 0; i < len; i ++)

a[i] = target[i + 1];

free(target);

return 0;

}int num_n(int n, int base, int id)

int base_sort(int arr, int len, int width)

arr_r = malloc(len * sizeof(int));

if (!arr_r)

for (i = 0; i < len; i ++)

arr_b[i] = arr[i];

for (j = 0; j < width; j++)

count_sort2(arr, arr_r, len);

}free(arr_r);

free(arr_b);

return 0;

}int main()

;for (i = 0; i < sizeof(arr) / sizeof(int); i ++)

printf("%d ", arr[i]);

printf("\n----------\n");

base_sort(arr,  sizeof(arr) / sizeof(int), 1);

for (i = 0; i < sizeof(arr) / sizeof(int); i ++)

printf("%d ", arr[i]);

printf("\n----------\n");

base_sort(arr,  sizeof(arr) / sizeof(int), 2);

for (i = 0; i < sizeof(arr) / sizeof(int); i ++)

printf("%d ", arr[i]);

printf("\n----------\n");

base_sort(arr,  sizeof(arr) / sizeof(int), 3);

for (i = 0; i < sizeof(arr) / sizeof(int); i ++)

printf("%d ", arr[i]);

printf("\n----------\n");

}完整的答案, 要測試hash要改一下main函式。

結果是503 87 512 61 908 170 897 275 653 426

170 61 512 503 653 275 426 87 897 908

503 908 512 426 653 61 170 275 87 897

61 87 170 275 426 503 512 653 897 908

2樓:灬愛爬樹的魚

。。。。。。。。。。。。。 無圖無j8

c語言資料結構與演算法要掌握哪些知識,請詳細說明?

3樓:幻影

太多了,棧,佇列,指標,結構體,共同體(知道一下就行了),還有鏈式的。排序演算法,查詢演算法,經典的我就不說了吧,應該知道的。還有遞迴方法,再深一些,剪枝演算法,動態規劃等。

4樓:匿名使用者

資料結構 就是儲存資料的。

演算法就是一個邏輯

5樓:勞斯萊斯丨

常量變數 資料的型別(整型,實型,字元型)和用法。演算法嘛,記住各個運算子的用法和優先等級

請問大學學習資料結構與演算法(c語言版)需要多強的c語言基礎?

c語言與演算法和資料結構的關係

6樓:匿名使用者

資料結構的主要作用是幫助你提升自己的程式設計思維!使你編寫程式的時候有一個好的思維和框架!使你寫的**和程式有一個好的框架!

資料結構研究的是資料的邏輯結構、儲存結構(物理結構)和資料的運算.其中的資料運算就是指演算法

演算法只是具體的實現步驟的指令集合!但是演算法也是資料結構最重要的一部份!設計一個好的演算法可以提高自己程式的執行效率!

(演算法不一定要求能夠在計算機上直接執行,但程式必須要求能在計算機中執行)

c語言只是對演算法或者資料結構的描述!描述資料結構和演算法不侷限於c語言,也可以是c++語言和其他的計算機語言甚至也可以用人的自然語言!

所以只是說學習好c語言能夠使自己學習的資料結構理論更好的在計算機中描述和表達!

7樓:匿名使用者

肯定是資料結構啦,資料的邏輯結構決定了演算法,資料的儲存結構決定了如何實現演算法。但是我覺得還是要了解一點c的基礎知識比較好。因為資料結構裡用的語言不是嚴格的c語言而是一種類c的解釋語言。

有c更有助於你理解資料結構。而且若是你想更進一步發展的話,比如考研資料結構就是必考的一門,所以資料結構很重要!!

8樓:匿名使用者

程式設計 = 演算法 + 資料結構 ,至於c語言只是一種工具

9樓:**頁

① 不要認為單獨學c很難真正編寫出程式。

② 不要太認為你沒學資料結構和演算法難以解決實際程式設計問題。

③ c語言只要你熟練掌握,這就是你學data structure and algorithms 的基礎。

④ 學好數構和演算法的前提是:你c語言用得比較熟練了(特別是指標、複合變數、陣列的程式設計運用)

⑤ 最後,你只要看一本關於資料結構和演算法的書就夠了《演算法導論》(國外的那本),如果要深入搞懂它,最好看它之前看knuth的一本《concrete mathematics》。演算法導論算是演算法與資料結構的聖經了,裡面充分講了演算法和資料結構的大部分理論和實踐。

⑥另外,演算法和資料結構是有深刻關係的,但是你完全可以學演算法的時候不用複雜資料結構就能解決大部分問題;或者不用複雜演算法,單憑構造複雜資料結構解決複雜問題。

《資料結構與演算法分析C語言描述》真的適合初學者嗎

資料結構課程一般都是在大學大一第二學期進行開設,從基礎上來說至少需要兩項 計算機基礎知識 學會正常使用電腦 一門計算機語言 這本書是c語言的,所以應該學會c語言 整體來說是適合初學者學習的,但是這個初學者的空間想象能力和邏輯思維能力不能太弱。因此最好要有一定的數學基礎,例如有一定的高數和線性數學基礎...

c語言的資料結構和程式設計,資料結構和C語言有什麼區別?

口框口 資料結構是資料及資料之間的關係,c語言只是一門程式語言,可以用 回c語言來寫程式,實現答資料按照某種特定的關係來組織和管理資料 也就是實現資料結構 所以資料結構的課程會有不同的語言版本,其實就是用不同的語言來實現資料結構了。呵呵,不知道你明白沒有呢 資料結構是c語言的更高層次的應用 示申僉 ...

急高手請進c語言中資料結構與演算法是用來幹嘛

那裡來這麼多問題 語言和語言之間的差別,就是一個問題的解決方法的差別如果真的把演算法弄明白了,就像張口說普通話一樣簡單能有怎麼多奇怪的問題,只能說 一 你對資料結構演算法理解不夠透徹 熟練 二 你對你所要操作的語言還沒有完全瞭解 演算法中的 一般都是偽 告訴你的是一種思想,複製過來肯定不能直接使用,...