線性表簡單的說就是n個資料元素的有限序列。
特點:1. 存在唯一的乙個被稱為「第乙個」的資料元素;2. 存在唯一的乙個被稱為「最後乙個」的資料元素;3. 除第乙個之外,集合中的每乙個資料元素均只有乙個前驅;4. 除最後乙個之外,集合中每個資料元素均只有乙個後繼。
按物理儲存方式分為兩大類:順序表示和鏈式表示
線性表的順序表示指的是用一組位址連續的儲存單元依次儲存線性表的資料元素。
特點:以元素在計算機內「物理位置相鄰」來表示線性表中資料元素之間的邏輯關係。
由於高階語言中的陣列型別也有隨機訪問的特性,所有通常都用陣列來描述資料結構中的順序儲存結構。
線性表的順序儲存結構如下圖:
插入操作:在第i(1<=i<=n)個元素之前插入乙個元素時,需將第n至第i(共n-i+1)個元素向後移動乙個位置。
刪除操作:刪除第i(1<=i<=n)個元素時需將從第i+1至第n(共n-i)個元素依次向前移動乙個位置
3.1.1 鏈式表概念
每個儲存單元稱為結點;其中儲存資料元素資訊的域稱為資料域;儲存直接後繼儲存位置的域稱為指標域;指標域中儲存的資訊稱為指標或鏈;n個結點(ai(1<=i<=n)的儲存映像)鏈結成乙個鍊錶,即為線性表的鏈式儲存結構。
3.1.2 物理儲存方式
線性表的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素。
鍊錶:(zhao, qian, sun, li, zhou, wu, zheng, wang)
表示:
3.1.3 邏輯狀態
通常我們把鍊錶畫成用箭頭相鏈結的結點的序列,結點之間的箭頭表示鏈域中的指標。
3.1.4 插入和刪除操作
帶頭結點的單鏈表:有時,我們在單鏈表的第乙個結點之前附設乙個結點,稱之為頭結點。頭結點的指標域儲存指向第乙個結點的指標(即第乙個元素結點的儲存位置)。
空表:非空表:
插入或刪除操作:在已知鍊錶中元素插入或刪除的確切位置的情況下,在單鏈表中插入或刪除乙個結點時,僅需修改指標而不需要移動元素。
插入(插入x結點):
刪除(刪除b結點):
3.1.5. 靜態鍊錶
陣列的乙個分量表示乙個結點,同時用游標代替指標指示結點在陣列中的相對位置,為了和指標型描述的線性煉表相區別,我們給這種用陣列描述的鍊錶起名叫靜態鍊錶。
插入操作:
刪除操作:
迴圈鍊錶是另一種形式的鏈式儲存結構。它的特點是表中最後乙個結點的指標域指向頭結點,整個鍊錶形成乙個環。
單迴圈鍊錶:
非空表:
空表:以上討論的鏈式儲存結構的結點中只有乙個指向直接後繼的指標域,由此,從某個結點出發只能順指標往後尋查其他結點。若要尋查結點的直接前趨,則需從表頭指定出發。為克服單鏈表這種單向性的缺點,可利用雙向鍊錶。顧名思義,在雙向鍊錶的結點中有兩個指標域,其一指向直接後繼,另一指向直接前趨。
1. 集合a=(1,2,4,6,7,8)和b=(2,3,5,6)將這兩者集合合併成乙個(有序非遞減合併)。
實現方式:
從時間和空間的角度考慮:合併到第三個集合c內 或 在其中乙個集合a或b基礎上合併
從儲存方式的角度考慮:順序表 或 鏈式表 或 靜態鍊錶
從鍊錶角度考慮:單向鍊錶 或 雙向鍊錶
2. 線性表的具體應用:一元多項式表示和加減法。
a(x) = 7 + 3x + 9x8 + 5x17 和 b(x) = 8x + 22x7 – 9x8
資料結構 線性表知識總結
4 插入操作 線性表的插入運算是指在表的第i 1 i n 1 個位置,插入乙個新元素e,使長度為n的線性表變成長度為n 1的線性表 注意元素移動和順序表長度增加 5 插入演算法的實現 template void seqlist insert int i,t x 5 分析 插在最後不移動元素,時間複雜...
資料結構(二) 線性表
線性表是最簡單最常用的資料結構,是一種典型的線性儲存結構。定義 線性表是由n n 0 個資料元素 結點 a1 a 2 an 組成的有限序列。n為表的長度。當n 0,為 空表 n 0時,為 a1,a 2,an 邏輯特徵 非空的線性表只有乙個頭結點,也只有乙個終結點,頭結點只有乙個直接後繼結點,而沒有直...
資料結構之線性表(二)
線性表的鏈式儲存結構之單鏈表 1.標頭檔案nodelist.h typedef int elemtype typedef struct node listnode,linklist 單鏈表的建立 void createlisthead linklist l,int n 單鏈表的刪除 int list...