C語言資料結構線性表(2)

2021-10-24 15:50:51 字數 2297 閱讀 5268

首先通過一段**回顧一下前天學習的知識吧!

該**表示的是從線性表的順序儲存結構中刪除乙個元素。

線性表的插入元素和刪除元素同通過**實現了,現在分析一下插入和刪除的時間複雜度:

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

最壞的情況:如果要插入和刪除的位置是第乙個元素,那就意味著要移動所有的元素向後或向前,所以這個時間複雜度為o(n)其中n為線性表中元素的個數。

至於平均情況,就取中間值o((n-1)/2)

根據之前所說的計算時間複雜度的規律,平均複雜度簡化後還是o(n)。

總結:線性表的順序儲存結構,在存、讀取資料時,不管是哪乙個位置,時間複雜度都

o(1)。而在插入或刪除時,時間複雜度都是o(n)。從這裡可以看出順序儲存結構它比較適合元素個數比較穩定,不經常插入和刪除元素,而更多的操作是訪問資料的應用。

線性表的優缺點:

優點:——不必為表示表中元素之間的邏輯關係而增加額外的儲存空間。

——可以快速的訪問表中任意位置的元素。

缺點:——插入和刪除元素需要大量移動元素。

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

線性表的鏈式儲存結構

線性表的鏈式儲存結構的特點是:用一組任意的儲存單元儲存線性表的資料元素,這組儲存單元可以存在記憶體中未被占用的任意位置。其次,鏈式儲存結構每乙個結點包括資料域指標域,資料域儲存他本身的資訊,指標域儲存它的後繼元素的儲存位址。如果每乙個結點只包含乙個指標域,就叫做單鏈表。

線性表都是有頭有尾的,我們把鍊錶中的第乙個結點的儲存位置叫做頭指標,最後乙個結點指標為空(null)。

頭指標與頭結點的異同

頭指標:

——頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指標。

——頭指標具有標識作用,所以 通常頭指標冠以鍊錶的名字(指標變數的名字)。

——無論鍊錶是否為空,頭指標均不為空。

——頭指標是鍊錶的必要元素。

頭結點:

——頭結點是為了操作的統一和方便而設立的,放在第乙個元素的結點之前,其資料域一般無意義

——有了頭結點,對在第一元素結點前插入結點和刪除第一結點的操作與其他結點的操作就統一了。

——頭結點不一定是鍊錶的必須元素。

在鏈式儲存結構中,資料的讀取相比順序儲存結構就比較複雜,獲得鍊錶第i個資料的一般步驟是:

——宣告乙個結點p指向鍊錶第乙個結點,初始化j從1開始;

——當j單鏈表的插入:

這兩個**是絕對不可以弄反的!!!

單鏈表的插入**實現:

單鏈表的刪除:

**實現:

從上面分析可以看出,對於插入或刪除越頻繁的操作,單鏈表的效率優勢就越是明顯。

下次開始學習線性表7!!!!

C語言資料結構線性表 順序表2

include define ok 1 define error 0 define maxsize 100 定義資料元素型別 typedef structelemtype 定義順序線性表 typedef structsqlist 初始化線性表 void inistlist sqlist pl 建立線...

資料結構 線性表 C語言

include include define maxsize 20 define elemtype int typedef struct sqlist 順序表型別 void createlist sqlist l,elemtype a,int n 由a中的n個元素建立順序表 l length k 設...

C語言資料結構 線性表

今天又是活力滿滿的一天!加油呀!今天開始學習線性表啦!一 何為線性表?線性表就像我們買票排隊一樣,具有線一樣性質的結構。線性表的官方定義 由零個或多個資料元素組成的有限序列。二 線性表的特點 元素之間有先來後到,具有一定的順序。若元素存在多個,會牽扯到前驅後繼的概念 則第乙個元素無前驅,最後乙個元素...