常用多維數(shù)據(jù)結(jié)構(gòu)有哪些?
八種常用的數(shù)據(jù)結(jié)構(gòu)是:數(shù)組、棧、鏈表、隊列、樹、圖、堆、哈希表等。
1.排列
Array是一種聚合數(shù)據(jù)類型,是幾個相同類型的變量按順序組織的集合。數(shù)組可以說是最基本的數(shù)據(jù)結(jié)構(gòu),在各種編程語言中都有對應(yīng)關(guān)系。一個數(shù)組可以分解成多個數(shù)組元素。根據(jù)數(shù)據(jù)元素的類型,數(shù)組可以分為整數(shù)數(shù)組、字符數(shù)組、浮點數(shù)組、指針數(shù)組和結(jié)構(gòu)數(shù)組。數(shù)組也可以有一維、二維和多維表示。
第二步:堆疊
Stack是一種特殊的線性表,只能在表的固定端插入和刪除數(shù)據(jù)節(jié)點。Stack按照后進(jìn)先出的原則存儲數(shù)據(jù),即先插入的數(shù)據(jù)會被壓入棧底,最后插入的數(shù)據(jù)會在棧頂。讀取數(shù)據(jù)時,從棧頂開始逐個讀取。堆棧通常用于保護(hù)匯編語言程序中的重要數(shù)據(jù)。當(dāng)堆棧中沒有數(shù)據(jù)時,稱為空堆棧。
3.長隊
隊列和棧一樣,也是一種特殊的線性表。與棧不同,隊列只允許在表的一端插入,在另一端刪除。一般來說,插入操作的結(jié)尾稱為隊列的尾部,刪除操作的結(jié)尾稱為隊列的頭部。當(dāng)隊列中沒有元素時,稱為空隊列。
4.鏈表
鏈表是一種數(shù)據(jù)元素按照鏈?zhǔn)酱鎯Y(jié)構(gòu)存儲的數(shù)據(jù)結(jié)構(gòu),其特點是物理不連續(xù)。鏈表由一系列數(shù)據(jù)節(jié)點組成,每個節(jié)點包括一個數(shù)據(jù)字段和一個指針字段。指針字段保存數(shù)據(jù)結(jié)構(gòu)中下一個元素的地址。鏈表結(jié)構(gòu)中數(shù)據(jù)元素的邏輯順序是通過鏈接鏈表中的指針來實現(xiàn)的。
5.樹
樹是一種典型的非線性結(jié)構(gòu),它是一個有兩個節(jié)點的有限集合k。在樹形結(jié)構(gòu)中,只有一個根節(jié)點,沒有前任節(jié)點。樹結(jié)構(gòu)中的所有其他節(jié)點只有一個前任節(jié)點,可以有兩個繼任者,m≥0。
6.圖表
圖形是另一種非線性數(shù)據(jù)結(jié)構(gòu)。在圖結(jié)構(gòu)中,數(shù)據(jù)節(jié)點一般稱為頂點,邊是有序的偶數(shù)對頂點。如果兩個頂點之間有邊,說明這兩個頂點相鄰。
7.許多
堆是一種特殊的樹型數(shù)據(jù)結(jié)構(gòu),通常討論的堆是二進(jìn)制堆。堆的特點是根節(jié)點的值是所有節(jié)點中最小或最大的,根節(jié)點的兩個子樹也是一個堆結(jié)構(gòu)。
8.哈希列表
哈希表源于Hash函數(shù),它的思想是如果結(jié)構(gòu)中有一條k
單鏈表和循環(huán)單鏈表,鏈表為空的條件分別是?
判斷是否有周期的方法:
對于任一節(jié)點,判斷其下一個值是否與任一上一個節(jié)點地址相同。有一樣就有循環(huán)。
鏈接列表為空:
前導(dǎo)單鏈表:h:head-gtnexthead
沒有頭的循環(huán)鏈表:listNULL