線性表及儲存結構

2021-09-12 06:39:29 字數 1848 閱讀 7303

線性表的邏輯定義

(1) 線性表,linear_list是最簡單和最常用的一種資料結構。

(2) 線性表是由n個資料元素(結點)a1,a2,…,an組成的有限序列。模擬數學中的數列概念。其中我們規定陣列元素的個數n為該線性表的長度,size。當n為零時,稱為空表。

(3) 非空的線性表通常記為:(a1,a2,a3,…,an),其中ai(1<=i<=n)表示線性表的其中乙個結點。

(4) a1稱為表的開始結點,無直接前繼,有乙個直接後繼a2;

an為表的終端結點,無直接後繼,有乙個直接前繼an-1;

其餘元素ai(2<=i<=n-1)為內部元素,有前繼ai-1,後繼ai+1;

結點與結點之間是線性的關係。故稱之為線性表。

(1) 置空表initlist(l),構造乙個空的線性表;

(2) 求表長listlength(l),返回線性表的長度;

(3) 取元素getnode(l,i),1<=i<=n;

(4) 按值查詢 locatenode(l,x),返回第乙個為x的結點的位置,若表中不存在則返回0

(5) 插入insert(l,i,x) 在l的i位置插入x,

(6) 刪除delete(l,i) 刪除表中的第i個元素

線性表的順序儲存和基本元素的實現

線性表的順序儲存

(1) 線性表的順序儲存指的是將線性表的資料元素按其邏次序依次存入一組位址連續的儲存單元中,用這種方式儲存的線性表稱為順序表,例如陣列。

(2) 假設每個結點的空間大小都一致,即資料型別一致,例如對於每個int來說,占用4個位元組,32位。設每個結點的空間大小為d,那麼,一般來說,線性表中第i個元素的儲存位置為:loc(ai)=loc(a1)+(i-1)*d (種樹比喻),其中ai的位址稱為首位址或基位址。

(3) 因為在順序表中任何乙個元素的位址都可以通過計算確定,所以可以做到隨機儲存。舉例記憶體的讀取模式。

(4) 因為在高階程式語言中,陣列型別具有隨機訪問的特性,因此,通常用陣列描述順序表。除了儲存線性表的結點外,還需要乙個變數來標識線性表的長度。

順序表上基本運算的實現

(1) 隨機讀取第i個元素,l[i]

(2) 置空表,l.size=0

(3) 插入,。。。

(4) 刪除。。。

(5) 倒置列表。。。

線性表的鏈式儲存結構

順序表的讀取快,但是插入與刪除緩慢,鑑於此,引申出鍊錶

鍊錶不可以隨機讀取,因為第i個元素的位址不能直接讀取到

單鏈表(線性鍊錶)

(1) 儲存ai時,除了儲存ai本身,還儲存了ai+1的位址資訊,即c中的指標。包含了兩部分資訊的結點,含有原有資料的域為資料域,儲存直接後繼的為指標域。

(2) 採取這種儲存方式的表為鍊錶,其中每乙個結點的儲存結構為:[data][next]

(3) 因為每乙個結點只包含1個指標域,所以稱為單鏈表。

(4) 因為第乙個結點沒有直接前趨,所以特地設立乙個head存放第乙個元素的位址,即頭指標。而終端結點的指標域則為null。如果表中乙個結點也沒有,則head=null

單鏈表上的運算

(1) 建立單鏈表:

② 尾插法:將新結點插入到當前鍊錶的表尾,需要乙個尾部指標,rear,使其始終指向鍊錶的尾結點。

(2) 查詢運算:

① 因為鍊錶中的位址隱含在前趨中,所以必須從head開始查詢

② 按結點序號查詢:。。。

③ 按結點值查詢:。。。

(3) 插入運算:

(4) 刪除運算:

資料結構 線性表及線性表順序儲存

寫的一定程度上,要再次提公升的時候,是該好好的看一下資料結構和演算法了。趁著最近有時間,好好的複習一下,今天主要是線性表和線性表的順序儲存。1 線性表是一種最基本 最簡單的的資料結構,是一種線性結構。2 線性表中資料元素之間的關係是一對一,是n個資料元素的有限序列。3 若將線性表記為 a1,ai 1...

線性表(線性儲存結構)

線性表有兩種物理儲存結構 順序儲存結構和鏈式儲存結構 順序儲存結構指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。陣列 如 a1,a2,an 物理上的儲存方式事實上就是在記憶體中找個初始位址,然後通過佔位的形式,把一定的記憶體空間給佔了,然後把相同資料型別的資料元素依次放到這塊空地種。1.儲...

線性表 線性表的順序儲存結構

線性表的順序儲存結構 線性結構是乙個資料元素的有序 次序 集。集合中必存在唯一的乙個 第一元素 集合中必存在唯一的乙個 最後元素 除最後元素外,均有唯一的後繼 除第一元素外,均有唯一的前驅。adt list 資料關係 r1 adt list 容易混的概念 引用符號 和引用型操作沒有關係 加工型操作 ...