資料結構導論 線性表

2021-08-04 04:38:43 字數 1262 閱讀 3646

線性表是最基本、最簡單、也是最常用的一種資料結構。

在資料結構邏輯層次上細分,線性表可分為一般線性表和受限線性表。一般線性表也就是我們通常所說的"線性表",可以自由的刪除或新增結點。受限線性表主要包括棧和佇列,受限表示對結點的操作受限制。

在實際應用中,線性表都是以棧、佇列、字串、陣列等特殊線性表的形式來使用的。由於這些特殊線性表都具有各自的特性,因此,掌握這些特殊線性表的特性,對於資料運算的可靠性和提高操作效率都是至關重要的。

(1)鍊錶的結點結構

┌───┬───┐

│data │next │

└───┴───┘

data域--存放結點值的資料域

next域--存放結點的直接後繼的位址(位置)的指標域(鏈域)

(2)鍊錶儲存方式

鍊錶中的資料是以節點來表示的,每個結點的構成:元素(資料元素的映象) + 指標(指示後繼元素儲存位置),元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。

(3)頭指標head和終端結點指標域的表示

單鏈表中每個結點的儲存位址是存放在其前趨結點next域中,而開始結點無前趨,故應設頭指標head指向開始結點。

注意:鍊錶由頭指標唯一確定,單鏈表可以用頭指標的名字來命名。

終端結點無後繼,故終端結點的指標域為空,即null。

在單鏈表中,如果讓那個最後乙個節點的指標域指向第乙個節點可以構成迴圈鍊錶。在迴圈鍊錶中,從任一節點出發能夠掃瞄整個鍊錶。

雙向鍊錶也叫雙鏈表,是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向迴圈鍊錶。

線性表的順序實現和鏈結實現各有其優缺點,不能籠統的說哪種實現更好。數序表要預先分配儲存空間,如果預先分配過大或過小,會造成浪費或發生上溢。單鏈表不需要預先分配空間,只要記憶體空間沒有耗盡,單鏈表中的節點個數就沒有限制,但是單鏈表的每個節點包括資料域和指標域,指標域需要占用額外空間。

資料結構與演算法導論2 線性表

define maxsize 20 typedef int elemtype typedef struct sqlist 總結下,順序儲存結構封裝需要三個屬性 儲存空間的起始位置,陣列data,它的儲存位置就是線性表儲存空間的儲存位置。線性表的最大儲存容量 陣列的長度maxsize。線性表的當前長度...

資料結構(線性表)

1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...

資料結構 線性表

參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...