這段時間在重新閱讀一本叫大話資料結構的書,書中內容通俗易懂,但是對新手不友好的就是他的**不夠齊全所以需要新手多去從網上找**練習,鑑於我再次的開始練習資料結構,因此會把該書中的**盡量補齊,供各位參考
第一篇是對線性表中順序表的操作
#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)
本來上一節介紹鏈式表示時,還應提到迴圈鍊錶和雙向鍊錶,但我決定還是不提為好。如果將學習一門課程的方法比作遍歷演算法的話,我覺得廣度優先演算法要比深度優先演算法好。一門全新的課程,如果一開始就進入具體的細節的話,很容易有挫折感,進而喪失興趣。所以如果能對這門課程有乙個大局觀,了解這門課程是講什麼的,涉...