線性表是由n≥0
個資料元素組成的有限序列。
我們學習了線性表上定義的基本運算: 有構造空表:initlist
(l),求表長:listlength(l
),取結點:getnode(l
,i) ,查詢:locatenode(l
,x),插入:insertlist(l
,x,i
),刪除:delete(l
,i)。
還學習了順序表、單鏈表以及雙鏈表的各種插入、刪除、查詢、取結點等運算操作。其中順序表是按線性表的邏輯結構次序依次存放在一組位址連續的儲存單元中。在儲存單元中的各元素的物理位置和邏輯結構中各結點相鄰關係是一致的。單鏈表:建立單鏈表頭插法:s->next=head
;head=s
;平均時間複雜度均為o(
n)。 尾插法:
head
=rear=null;if
(head=null
)head=s
;else r->next=s
;r=s
; 平均時間複雜度均為o(
n)。 插入運算p=getnode(l
,i-1
);s->next=p->next
;p->next=s
;平均時間複雜度均為o(
n)刪除運算:
p=getnode(l
,i-1
);r=p->next
;p->next=r->next
;free(r
);平均時間複雜度均為o(
n)。雙鏈表:在單鏈表的每個結點裡再增加乙個指向其直接前趨的指標域prior
,形成兩條不同方向的鏈。由頭指標
head
惟一確定。雙鏈表也可以頭尾相鏈結構成雙(向)迴圈鍊錶。雙鏈表上的插入和刪除時間複雜度均為o(
1)。
在學習順序表和煉表時,難免會容易混淆一些概念問題,然而用比較方法卻很有效, 順序表和煉表的比較:基於空間,順序表的儲存空間是靜態分配,儲存密度為1
;適於線性表事先確定其大小時採用。鍊錶的儲存空間是動態分配,儲存密度<1
;適於線性表長度變化大時採用。基於時間,順序表是隨機儲存結構,當線性表的操作主要是查詢時,宜採用。以插入和刪除操作為主的線性表宜採用鍊錶做儲存結構。若插入和刪除主要發生在表的首尾兩端,則宜採用尾指標表示的單迴圈鍊錶。
資料結構第二章總結
線性表簡稱表,是n個具有相同型別的資料元素的有限序列。線性表中資料元素的個數稱為線性表的長度。長度為零時稱為空表。線性表中資料元素的型別是同一的。線性表的順序儲存結構稱為順序表。儲存結構是資料及其邏輯結構在計算機中的表示 訪問結構是在乙個資料結構上對查詢操作的時間效能的一種描述。順序表的類的宣告 c...
第二章 資料結構 二
知識點 trie樹 並查集,堆的操作 高效地儲存和查詢字串集合的資料結構 const int n 100010 int son n 26 cnt n idx 插入 void insert char str cnt p 以這個點結尾的字元數 查詢 intquery char str return cn...
資料結構導論 第二章
第二章主要說的是線性表,那麼什麼是線性表呢?線性表是一種線性結構,在頭結點無直接前驅有乙個直接後繼,尾節點無直接後繼有乙個直接前驅。1.線性表的順序儲存結構 簡單的說就是把線性表的結點按照它的邏輯結構順序,依次的存放到計算機記憶體中一組連續的儲存單元中。用順序儲存來實現的線性表為順序表。這裡要注意,...