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

2021-08-21 20:13:40 字數 2261 閱讀 9548

一、基本概念

1、線性表定義:線性表是有n個型別相同資料元素的有限序列。記作:(a1,a2,a3..ai...an),n為線性長度。

2、特點:線性結構是最簡單,最直接的資料關係,資料元素之間一一對應。

同一性:由同類資料元素組成,每個ai必屬於同一資料物件。

有窮性:有限個資料元素組成,表長度就是資料元素個數。

有序性:相鄰元素間有序偶關係。

3、直接前驅:除了第乙個外,集合中的每個資料元素均只有乙個前驅。

4、直接後繼:除了最後乙個,集合中每個資料元素均只有乙個後繼。

5、長度:該序列中所含元素的個數叫做線性表的長度。

6、空表:長度n為0時,線性表為空表。

對於線性表的基本操作有:初始化、銷毀、置空、判空、求長度、查詢、訪問、插入、刪除。

順序儲存結構:結點順序訪問、關係線性訪問。對線性表順序儲存結構c語言描述:(型別是一種規格的定義,變數是一種空間的定義)

#define maxsize 100

typedef structseqlist;

二、線性表順序儲存結構的基本運算

1、查詢

(1)按序號查詢getdata( l,i )

要求查詢線性表l中第i個資料元素,其結果l.elem[i-1]。

(2)按內容查詢locate(l,e)

思想:在順序表l中依次存放著各元素,在表中查詢與e相等的元素,若l[i]=e,則找到該元素,並返回i的值,若找不到,返回-1。

int locate(seqlist l,elemtype e)

2、插入

長度為n的線性表(e1,e2...ei-1,ei...en)

長度為n+1的線性表(e1,e2...ei-1,e,ei...en),在表的第i個位置之前插入值為e的元素。

思想:(1)定位:定位到插入位置第i個元素,

(2)移動:從插入位置i-1到表末尾l->last都後移一位,

(3)插入:插入元素到l.elem[i-1]。

int inlist(seqlist *l,int i,elemtype e)

if(l->last>=maxsize-1)

for(k=l->last;k>=i-1;k--)

l->elem[k+1]=l->elem[k];

l->elem[i-1]=e;

l->last++;

return(ok);

}

3、刪除

長度n (e1,e2...ei-1,ei,ei+1...en)

長度n-1(e1,e2...ei-1,ei+1...en),在表的第i個位置刪除值為e的元素。

int dellist(seqlist *l,int i,elemtype e)

//將刪除的元素存入e所指向的變數中

*e=l->elem[i-1];

for(k=i;k<=l->last;k++)

l->elem[k-1]=l->elem[k];//後面的元素依次前移

l->last--;

return(ok);

}

4、合併

兩順序表la、lb,遞增有序,將它們合併成乙個遞增有序lc。

思路:(1)初始化:lc空表,設lc表的指示器k=0,

(2)比較迴圈:la.elem[i]和lb.elem[j]兩元素進行比較,較小的入lc表的指示器

void merge(seqlist *la,seqlist *lb,seqlist *lc)

else

/*當la比lb長時,將la餘下元素賦給lc*/

while(i<=la->last)

/*當lb比la長時,將lb餘下元素賦給lc*/

while(j<=lb->last)

lc->last=la->last+lb->last+1;

}

線性表的順序儲存結構的優缺點,優點:無需為表示結點間邏輯關係而增加額外的儲存空間,可方便地隨機訪問查詢表中的任一元素。缺點:除表尾之外插入刪除效率低,靜態分配。

順序表中需注意的幾點:

(1)長度n的順序表中的第i個(1<=i<=n+1)位置插入1個元素,需要移動 n-i-1 個元素。

(2)刪除長度n的順序表中元素的概念相同,則刪除乙個元素平均要移動 (n-1)/2 個元素。

(3)順序表中第乙個元素位址若為base,每乙個結點佔m個單元,則第i個結點的位址為 base+(i-1)*m 。

資料結構 線性表順序儲存(順序表)

特點 線性表的順序儲存是指用一組位址連續的儲存單元依次儲存線性表中的各個元素。作用 線性表中在邏輯結構上相鄰的資料元素儲存在相鄰的物理儲存單元中,即通過資料元素 物理儲存的相鄰關係來反映 資料元素之間 邏輯上的相鄰關係 順序儲存的實現 一維陣列儲存順序表中的資料 缺點 大小固定,使用前需要分配位址,...

《資料結構 線性表》順序儲存

一 什麼是線性表?線性表定義 0個 或 多個 資料元素 有限 序列。序列 這個必須是有順序的,若元素存在多個,則第乙個元素無前驅,最後乙個元素無後驅。乙個元素只能有乙個前驅 後驅。有限 線性表必須是有限的,無限的只存在於數學中。線性表元素個數必須是 大於 0,當 n 0 時,稱為空表。二 線性表抽象...

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

1.線性表定義 線性表 list 零個或多個資料元素的有限序列。關鍵知識點 1.首先它是乙個序列,元素之間室友順序的 2.線性表強調的是有限的,元素個數是有限的 3.在較複雜的線性表中,乙個資料元素可以由若干個資料項組成。其數學定義 若將線性表標記為 a1,ai 1 ai ai 1 a n 則表中的...