線性表簡介

2021-08-08 15:31:37 字數 2354 閱讀 9990

什麼是線性表?

線性表是最簡單、最基本、最常用的資料結構。線性表是線性結構的抽象(abstract),線性結構的特點是結構中的資料元素之間存在一對一的線性關係。這種一對一的關係指的是資料元素之間的位置關係,即:( 1)除第乙個位置的資料元素外,其它資料元素位置的前面都只有乙個資料元素;( 2)除最後乙個位置的資料元素外,其它資料元素位置的後面都只有乙個元素。也就是說,資料元素是乙個接乙個的排列。因此,可以把線性表想象為一種資料元素序列的資料結構。

線性表就是位置有先後關係,乙個接著乙個排列的資料結構。

線性表的抽象資料型別定義如下:

adt 線性表(list)

data

線性表的資料物件集合為(a1,a2,a3,…,an),每乙個元素型別均是datatype其中,除第乙個元素a1外,每個元素只有乙個直接前驅元素,除了最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素,資料元素之間的關係是一對一的關係

operation

initlist( l) : 初始化操作建立乙個空的線性表l

isempty() : 若線性表為空,返回true,否則返回false,,,

clear() : 將線性表清空

localelem(l,i) 在l表中查詢i,如果查詢成功,返回索引,若不存在返回-1

insert(l ,i,e) 在l表中第i個位置,插入新元素 e

delete(i) 刪除中的第i個元素

length() 返回線性表的長度

endadt

線性表的順序儲存結構

線性表的順序儲存結構,指的是用一段位址連續的儲存單元一次儲存線性表的資料元素

順序表

在計算機內,儲存線性表最簡單、最自然的方式,就是把表中的元素乙個接乙個地放進順序的儲存單元,這就是線性表的順序儲存(sequence storage)。線性表的順序儲存是指在記憶體中用一塊位址連續的空間依次存放線性表的資料元素,用這種方式儲存的線性表叫順序表(sequence list),如圖所示。順序表的特點是表中相鄰的資料元素在記憶體中儲存位置也相鄰

儲存器中沒有儲存單元都有自己的編號,這個編號稱為位址,,,

線性表順序結構的優缺點:

優點:無需為表示表中元素之間的邏輯關係而增加額外的儲存空間,可以快速地訪問表中任一位置的元素

缺點:插入和刪除操作需要移動大量的元素,當線性表的長度變化較大是,難以確定儲存空間的容量,造成儲存空間的「碎片」

為了表示每個資料元素ai 與其後直接後繼元素ai+1之間的邏輯關係,對資料元素ai來說,處理儲存其本身的資訊之外,還需儲存乙個指示其後繼的資訊(即直接後繼的儲存位置),,我們把儲存資料元素資訊的域稱為資料域,吧儲存直接後繼位置的域稱為指標域,指標域中儲存的資訊叫指標或者鏈,這兩個部分資訊組成資料元素ai的儲存映像,稱為結點(node)

鍊錶中第乙個節點的儲存位置叫頭指標

單向鍊錶的儲存方式示意圖:

迴圈鍊錶

有些應用不需要鍊錶中有明顯的頭尾結點。在這種情況下,可能需要方便地從最後乙個結點訪問到第乙個結點。此時,最後乙個結點的引用域不是空引用,而是儲存的第乙個結點的位址(如果該煉錶帶結點,則儲存的是頭結點的位址),也就是頭引用的值。帶頭結點的迴圈鍊錶(circular linked list)如圖所示。

雙向鍊錶

雙向鍊錶(double linked list) 是在單鏈表的每個結點中,在設定乙個指向其前驅節點的指標域

靜態鍊錶

首先讓陣列的元素都是由兩個資料域組成的,data和cur,,也就是說,陣列的每個下標都對應乙個data和乙個cur,資料域data用來存放資料元素,也就是我們通常處理的資料,而游標cur相當於單鏈表中的next指標,存放該元素的後繼在陣列中的下標,

我們把這種用陣列描述的鍊錶叫做靜態鍊錶,這種描述方法還有起名叫做游標實現法

靜態鍊錶優缺點:

優點:在插入和刪除操作是只需要修改游標,不需要移動元素,從而改進在順序儲存結構中的插入和刪除操作需要移動大量的元素移動,,,

缺點:沒有解決連續儲存分配帶來的表長難以確定的問題,失去了屬性儲存結構隨機訪問的特性,,,

線性表 簡介

線性表 list 是零個或多個資料元素的集合。線性表中的資料元素之間是有順序的。線性表中的資料元素個數是有限的。線性表中的資料元素的型別必須相同。1 a0為線性表的第乙個元素,只有乙個後繼。2 an為線性表的最後乙個元素,只有乙個前驅。3 除a0和an外的其它元素ai,既有前驅,又有後繼。4 線性表...

鏈式線性表和順序線性表

在這裡插入 片 線性表的儲存結構 typedef struct seqlist typedef struct seqlist 順序表基本操作 初始化順序表在這裡插入 片 intseqlist init seqlist list,int size 插入資料元素在這裡插入 片 intseqlist in...

線性表演算法題庫 線性表習題

鍊錶。若指標p指向某結點時,能夠根據該指標找到其直接後繼,能夠順後繼指標鏈找到p結點後的結點。但是由於不知道其頭指標,所以無法訪問到p指標指向的結點的直接前趨。因此無法刪去該結點。2.雙鏈表。由於這樣的鍊錶提供雙向指標,根據p結點的前趨指標和後繼指標可以查詢到其直接前趨和直接後繼,從而可以刪除該結點...