資料結構 線性表順序儲存插入和刪除操作

2021-07-24 18:05:35 字數 1449 閱讀 2684

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

2、listempty(l):判斷線性表是否為空,如果為空,返回true,否則返回false

3、clearlist(*l):將線性表清空

4、getelem(l,i,*e):將線性表中的第i個位置元素值返回給e

7、listdelete(*l,i,*e):刪除線性表中第i個位置元素,並用e返回其值

8、listlength(l):返回線性表l的元素個數

一、插入操作舉例:實現a=aub;

**:void unionl(list  *la, list lb)

int  la_len , lb_len , i ;

elemtype  e;

la_len =listlength(*la);

lb_len= listlength(lb);

for( i = 1; i <=lb_len; i++)

getelem(lb,i,&e);

if(!locateelem(*la, e))

listinsert(la, ++la_len, e);

二、刪除操作

1、  刪除操作的思路: —如果刪除位置不合理,丟擲異常

—取出刪除元素

—從刪除元素位置開始遍歷到最後乙個元素位置,分別將他們向前移

動乙個位置

2、  刪除操作**:

int listdelete(sqlist  *l, int i, elemtype *e)

int  k;

if(l->length  ==  0)

return  0;

if(i < 1 | i> l->length)

return  0;

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

if( i < l->length)

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

l->data[k-1] = l->data[k];

l->length--;

return  0;

三、分析插入操作和刪除操作的時間複雜度:

最好的情況:插入和刪除操作都剛好要求在最後乙個位置操作,因此不需要移動任何位置,所以此時的時間複雜度為o(1);

最壞的情況:如果要插入和刪除的位置是第乙個元素,那就意味著所有的元素向後或者向前,所以時間複雜度為o(n);

在存、讀資料時,不管是什麼位置,時間複雜度都是o(1),而在插入或者刪除時,時間複雜度都是o(n)。說明順訊儲存結構適合元素個數穩定,訪問資料的應用

一、線性表順序儲存結構的優缺點

優點:1、  無需為表中元素之間的邏輯關係二增加額外的儲存空間

2、  可以快速的訪問表中任意位置的元素

缺點:1、  插入和刪除操作需要移動大量元素

2、  當線性表長度變化較大時,難以準確確定儲存空間的容量

3、  容易造成儲存空間的碎片

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

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

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

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

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

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