再讀資料結構

2021-10-04 19:43:14 字數 1697 閱讀 5525

這段時間在重新閱讀一本叫大話資料結構的書,書中內容通俗易懂,但是對新手不友好的就是他的**不夠齊全所以需要新手多去從網上找**練習,鑑於我再次的開始練習資料結構,因此會把該書中的**盡量補齊,供各位參考

第一篇是對線性表中順序表的操作

#include

#define maxsize 20

using

namespace std;

typedef

int elemtype;

typedef

struct

sqlist;

//初始化線性表

void

initlist

(sqlist *

&l)//首先就是要建立乙個順序表 輸出型引數均使用「&」型別,不論引數值是否改變

void

createlist

(sqlist *

&l,elemtype a,

int n)

l->length=k;

}//線性表中插入新元素

bool

listinsert

(sqlist *

&l,int i,elemtype e)

//刪除資料元素

bool

listinsert

(sqlist *

&l,int i,elemtype& e)

//獲取順序表中第i個元素值

bool

getelem

(sqlist *l,

int i,elemtype &e)

//判斷線性表是否為空表

bool

listempty

(sqlist *l)

//求線性表的長度

intliselength

(sqlist *l)

//輸出線性表

void

displist

(sqlist *l)

}//按照元素查詢

intlocateelem

(sqlist *l,elemtype e)

if(i>l-

>length)

return0;

else

return i+1;

}//銷毀線性表

void

destorylist

(sqlist *

&l)/*

順序表採用指標傳遞,有兩個優點

更清楚看到順序表建立和銷毀過程(malloc/free);

在演算法的函式之間傳遞更加節省空間(在函式體內不必建立值形參即整個順序表的副本)

*/int

main()

;initlist

(l);

createlist

(l,a,5)

;displist

(l);

listinsert

(l,6,6

);cout

(l);

destorylist

(l);

displist

(l);

return0;

}//分析最好最壞的時間複雜度

/*所以在長度為n的線性表中刪除乙個元素時所需移動元素的平均次數為:

(n-1)/2

最好是0次就是不用移動,最壞是n-1次 */

讀資料結構(C語言版)

資料 資料是對現實世界物質的符號表示,在計算機中的意思是能輸入到計算機中進行計算處理的符號為資料 實現是客觀世界在計算機中的表示方式,是程式加工的原材料。資料可以是聲音,文件 資料元素 組成資料的基本構成單位,通常以結構化的形式出現,比如一本書的書目資訊,包含作者,書名,出版刊號,出版社這些資料項,...

讀《資料結構(C語言版)》(4)

從本節開始討論線性表,這次先討論線性表的順序實現。一提到線性表,我們腦子很可能會出現陣列 鍊錶這樣的概念。沒錯,陣列和鍊錶都是線性表,但它們只是線性表的兩種實現,強調的是線性表的物理結構。我們研究乙個資料結構時,一般先從它的邏輯結構入手,等研究清楚了邏輯結構再考慮具體的物理實現。在寫程式時,思路也是...

讀《資料結構(C語言版)》(6)

本來上一節介紹鏈式表示時,還應提到迴圈鍊錶和雙向鍊錶,但我決定還是不提為好。如果將學習一門課程的方法比作遍歷演算法的話,我覺得廣度優先演算法要比深度優先演算法好。一門全新的課程,如果一開始就進入具體的細節的話,很容易有挫折感,進而喪失興趣。所以如果能對這門課程有乙個大局觀,了解這門課程是講什麼的,涉...