資料結構基礎(4)順序表 鍊錶 棧

2021-08-08 18:18:13 字數 816 閱讀 9625

順序表雖然是一種很有用的儲存結構,但是也具有以下侷限性:

1.若要為順序表擴充儲存空間,則需要重新建立乙個位址連續的更大的儲存空間,並把原有的資料元素都複製到新的儲存空間中。

2.因為順序儲存要求邏輯上相鄰的資料元素,在物理儲存位置上也相鄰,這就意味著增加刪除元素會引起平均約一半的資料元素移動。

所以順序表適合「靜態」線性表,即一旦形成就很少進行插入刪除操作。對於需要頻繁執行插入和刪除操作的「動態」線性表,通常採用鏈式儲存結構。

因為鏈式儲存結構不要求邏輯上相鄰的資料元素在物理上也相鄰,是用一組位址任意的儲存單元來存放資料元素的值。所以,它只能按順序訪問。

鏈式儲存結構的概念之前已經說過了,這裡就不詳細說了。

對於鍊錶我個人的理解是這樣的,每個鍊錶都會有乙個頭指標(head)。如果單鏈表有頭結點的話,那麼這個頭指標是指向這個頭結點的,

如果是沒有頭結點,那麼這個頭指標是指向鍊錶中的首結點的。

什麼是頭結點呢,頭結點就是無論是不是空鍊錶,永遠在鍊錶實體地址上的第一位。設定乙個頭結點,裡面並不存放值,只是為了簡化刪除,插入操作。

單鏈表的總體思想:從乙個空表開始,一次將新結點插入到當前形成的單鏈表中。根據插入位置的不同,分為頭插法和尾插法。

頭插法:每次將建立的新結點插入到當前形成的單鏈表的表頭。

棧是一種特殊的線性表,棧中的資料元素以及資料元素之間的邏輯關係和線性表相同,倆者的差別在於:線性表的插入和刪除操作可以在任意位置進行,而棧的插入和刪除操作只允許在表的尾端進行。

通常把插入操作叫做入棧,刪除操作叫做出棧。棧是一種先進後出的線性表。生活中有許多具有棧特性的應用例項,比如,一疊盤子。去盤子和新增盤子的操作滿足先進後出的原則。

資料結構《順序鍊錶》

include using namespace std template class sqlist template sqlist sqlist int m template sqlist sqlist template void sqlist createlist int n template t...

資料結構 順序表與鍊錶

順序表插入操作 temp seqlist list temp賦值為乙個結構體變數 for i temp length i pos i pos是插入的位置,注意是ta是下標 temp i int node 放新結點 temp length 刪除操作 for int i pos 1 ilength i ...

資料結構 鍊錶4 企業鍊錶

linklist.h ifndef linklist h define linklist h include include 鍊錶結點 typedef struct linknode linknode 鍊錶 typedef struct linklistlinklist 比較函式指標 typedef...