大話資料結構4線性表 續1

2021-07-24 19:13:44 字數 2060 閱讀 4636

1、順序儲存結構的插入與刪除:

獲得元素操作:

#define ok 1

#define error 0

#define true 1

#define false 0

typedef int status;

/*status是函式的型別,其值是函式結果狀態**,如ok等*/

/*初始條件:順序線性表l已存在,1<=i<= listlength(l)*/

/*操作結果:用e返回l中第i個資料元素的值*/

status getelem(sqlist l,int i,elemtype *e)

插入操作:

思路:1、如果插入位置不合理,丟擲異常;

2、如果線性表長度大於等於陣列長度,則丟擲異常或動態增加容量;

3、從最後乙個元素開始向前遍歷到第i個位置,分別將它們都向後移動乙個位置

4、將要插入元素填入位置i處

5、表長加1

**:

/*初始條件:順序線性表l已存在,1<=i<=listlength(l)*/

/*操作結果:在l中第i位置之前插入的新資料元素e,l的長度加1*/

status listinsert(sqlist *l,int i,elemtype e)

l->data[i-1] = e; /*將新元素插入*/

l->length++;

return ok;

}

刪除操作:

思路:1、如果刪除位置不合理,丟擲異常;

2、取出刪除元素;

3、從刪除元素位置開始遍歷到最後乙個元素位置,分別將它們都向前移動乙個位置;

4、表長減1

**:

/*初始條件:順序線性表l已經存在,1<=i<=listlength(l)*/

/*操作結果:刪除l的第i個資料元素,並用e的返回其值,l的長度減1*/

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

l->length--;

return ok;

}

如果元素要插入到最後乙個位置,或者刪除最後乙個元素,該時間複雜度為o(1),但是最壞的情況為元素要插入到第乙個位置或者刪除第乙個元素,該時間複雜度為o(n)。

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

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

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

2、線性表的鏈式儲存結構:

順序儲存結構不足的解決辦法:採用鏈式儲存結構

線性表鏈式儲存結構定義:用一組任意的儲存單元儲存線性表的資料元素,這組儲存單元可以是連續的,也可以是不連續的,這就意味著這些資料元素可以存在未被占用的任意位置,鏈式結構中,不僅要存資料元素資訊,還要儲存它的後繼元素的儲存位址。資料域:儲存資料元素資訊的域;指標域:儲存直接後繼位置的域。指標域中儲存的資訊稱為指標或鏈,這兩部分資訊組成資料元素的儲存映像,稱為結點(node).鍊錶中的第乙個結點的儲存位置叫頭指標,線性表的最後乙個結點指標為「空」,在單鏈表的第乙個結點前附設乙個結點,稱為頭結點。頭結點的資料域可以不儲存任何資訊。

頭指標與頭結點的異同:

頭指標:1、頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指  針;頭指標具有標識作用,所以常用頭指標冠以鍊錶的名字;無論鍊錶是否為空,頭指標均不  為空。頭指標是鍊錶的必要元素

頭結點:頭結點是為了操作的統一和方便而設立的,放在第一元素的結點之前,其資料域一般  無意義(也可存放鍊錶的長度);有了頭結點,對在第一元素結點前插入結點和刪除第一結點,  其操作與其他結點的操作就統一了;頭結點不一定是鍊錶必須要素

線性表鏈式儲存結構**:

/*線性表的單鏈表儲存結構*/

typedef struct node

node;

typedef struct node *linklist; /*定義linklist*/

《大話資料結構》 線性表

created by pengxiangzhou on 2021 1 24.include ifndef c ds linear list h define c ds linear list h endif c ds linear list h 線性表 順序儲存結構 順序儲存結構的三個屬性 陣列da...

大話資料結構 線性表

線性表是零個或多個資料元素的有限序列。線性表的抽象資料型別定義如下 adt 線性表 list data 線性表的資料物件集合為,每個元素的型別均為datatype。其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的...

大話資料結構 線性表 2

線性表的順序儲存結構最大的缺點是插入和刪除時需要移動大量資料,這顯然就需要消耗時間。本節討論的鏈式儲存結構可以很好滴解決這個問題。線性表的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素,這些儲存單元可以使連續的,也可以是不連續的。這就意味著,這些資料元素可以存在記憶體未被占用的任意位置...