用C語言描述資料結構 線性表 順序表

2021-09-01 04:40:44 字數 3215 閱讀 8412

- 什麼是線性表

線性表是由n個元素(結點)組成的有限序列。n為線性表的長度,n=0時稱為空表。

- 線性表的邏輯特徵

(1)對於非空的線性表,有且有乙個開始結點,它沒有直接前驅,而僅有乙個直接後繼。

(2)對於非空的線性表,有且有乙個終端結點,它沒有直接後繼,而僅有乙個直接前驅。

(3)對於非空的線性表,內部結點(除去開始結點和終端結點)都有且僅有乙個直接前驅和乙個直接後繼。

- 圖示

- 什麼是順序表

把線性表的結點按邏輯次序依次存放在一組位址連續的儲存單元裡,這種方法儲存的線性表簡稱為順序表。例如一維陣列就是採用順序儲存表示的。

- 順序表的描述

typedef

int datatype;

//該用法有疑惑請看腳注

#define m 100

typedef

struct

sequenlist;

sequenlist l;

我們將與順序表有關的資訊封裝在一起,而將順序表型別sequenlist定義為乙個結構體,這樣定義使得對某一順序表l(l是sequenlist型別的指標變數)的引用僅涉及結構變數*l,它符合程式設計的思想。

- 順序表上的基本運算

資料的插入:對於順序表上的資料插入,除了在表的末尾插入之外,在其他地方插入需要移動插入結點及其後的所有結點,該步驟完成以後才能進行資料插入操作,同時表的長度(last)也需要隨之發生改變(增加),如下圖所示:

**實現:

//移動元素位置(i為資料x將要插入的位置)

for(

int j = l.last; j >= i -

1; j--

)//插入資料(x為插入資料)

l.data[i -1]

= x;

//表的最後乙個元素的指向增加(當前表中實際存放元素數量)

l.last++

;

資料的刪除:對於順序表上資料的刪除,其思想與插入相反。首先選定需要刪除的資料(位置),然後,移動刪除資料之後的元素,均向前移動一位。事實上,刪除資料,並不是真正意義上的刪除,而只是資料覆蓋而已,表現上為資料的刪除,同時表的長度(last)也需要隨之發生改變(減小),如下圖所示:

**實現:

//移動元素位置(i為刪除資料的位置)

for(j = i; j <= l.last; j++

)//表的最後乙個元素的指向減小(當前表中實際存放元素數量)

l.last--

;

表的長度:順序表使用一維陣列來儲存,其長度為該陣列實際儲存資料元素個數。即為last指向的陣列下標值(也是last的值),所以表的長度為last。

表的置空:順序表的置空,是直接將last指向的值賦值為-1,當新的資料進入,又會從陣列0索引處開始覆蓋之前的資料,由於存在last指向,之前的資料不會對後續表中資料產生影響;而不應使用移除資料的方法實現表的置空。

至此,順序表上的關鍵操作(插入、刪除)敘述完畢。

程式執行結果圖:

以下為完整**:

#include

"stdio.h"

#include

"stdlib.h"

typedef

int datatype;

//該用法有疑惑請看腳注

#define m 100

#define n 10

typedef

struct

sequenlist;

sequenlist l;

//靜態

/*sequenlist * create_sequenlist()

//動態

*/void

shuru()

printf

("\n\t\t資料已產生!\n");

}void

shuchu()

}else

}void

zhikong()

void

changdu()

else

}void

charu()

else

else

//插入資料(x為插入資料)

l.data[i -1]

= x;

//表的最後乙個元素的指向增加(當前表中實際存放元素數量)

l.last++

;shuchu()

;}}}

else

}void

shanchu()

else

//表的最後乙個元素的指向減小(當前表中實際存放元素數量)

l.last--

;shuchu()

;}}else

}void

main()

if(b !=0)

}printf

("\n\t\t謝謝使用!qwq\n\n\t\t");

}

如有錯誤,歡迎指正! _

注意:typedef用法類似巨集定義,意思和define相同,只是寫法不同。typedef int datatype的作用在於在程式設計中,為了使一些複雜型別等更容易被理解、記憶,加速開發,而使用的一種技術。這相當於給一些型別乙個別稱,起到的作用都是相同的,此處就相當於給int型別起了乙個別稱叫datatype。1

↩︎

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

首先線性表的基本函式 1.initlist l 建立乙個空的線性表l 2.destorylist l 如果線性表已經存在的話,則銷毀線性表l 3.listlength l 返回線性表的元素個數 4.getlist l,i e 用e返回線性表第i個元素的值 5.locateelem l,e compa...

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

線性表是最常用且最簡單的一種資料結構。簡言之,乙個線性表是n個資料元素的有限序列。在資料元素的非空有限集合中 存在唯一的乙個被稱做 第乙個 的資料元素 存在唯一的乙個被稱做 最後乙個 的資料元素 除第乙個之外,集合中的每個資料元素均只有乙個前驅 除最後乙個之外,集合中每個資料元素均只有乙個後繼 in...

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

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