線性表 順序表的基本操作(動態)

2021-09-11 18:09:12 字數 2355 閱讀 6038

線性結構示意圖:

對於非空的線性表或線性結構,其特點是:

線性表的抽象資料型別定義如下:

adt list(線性表)

; 每個元素的型別均為datatype。

資料關係:一對一的關係,每個元素有乙個或零個前驅或後繼。

} operation(基本操作)

}

線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素,邏輯上相鄰的資料元素,其物理次序也是相鄰的。如下圖所示:

位址計算方法假設線性表中每個元素需要占用c個儲存單元,並以所佔的第乙個單元的儲存位址作為資料元素的儲存起始位置。則線性表中第i+1個資料元素與第i個資料元素關係如下:

loc() + c

一般來說,線性表的第i個資料元素的儲存位置為:

loc()=loc(

如圖所示:

由此,只要確定了儲存線性表的起始位置,那麼線性表中的任一元素我們都可以對其進行增、刪、改的操作,所以線性表的順序儲存結構是一種隨機訪問的儲存結構。

由於高階程式設計語音的陣列型別也有隨機訪問的特性,因為通常用陣列來描述資料結構中的順序儲存結構。

在此,由於線性表長度可變,且所需儲存空間也隨問題不同而不同,所以我們用動態分配一維陣列來表示線性表。

開始之前我們規定一下預定義常量及型別:

#define ok 1

#define error 0

#define overflow -2

typedef int status;

順序表的偽碼儲存結構描述:(以下語言都為類c偽碼,除具體實現**以外)

#define maxsize 100			//順序錶可達到的最大長度

typedef struct

sqlist; //順序表的結構型別為sqlist

順序表中的基本操作實現:1.順序表的初始化【演算法步驟】

status initlist(sqlist &l)

2.順序表的取值o(1)【演算法步驟】

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

3.順序表的查詢 

o(n)

【演算法步驟】。

int locateelem(sqlist l,elemtype e)

5.順序表的刪除

o(n)

【演算法步驟】

status listdelete(sqlist &l,int i)

7.將線性表清空

o(1)

【演算法步驟】

void clearlist(sqlist &l)

優點:缺點:

簡單實現順序表:

線性表的基本操作(順序表)

實驗內容 建立順序表,實現求表的長度 遍歷表 查詢 插入和刪除元素 求前驅 求後繼等操作 實驗基本要求 進一步熟悉 turbo c 或者vc 環境 掌握線性表結構的基本操作 include using namespace std include include define maxsize 50 t...

線性表 順序表的基本操作

includeusing namespace std typedef long long ll const ll n 1000000 5 define maxsize 50typedef struct sqlist 基礎操作函式 初始化順序表函式,構造乙個空的順序表 void initlist sq...

順序線性表的基本操作

這個 可以對順序線性表進行查詢 刪除 插入 建立等基本操作。include struct node typedef node list,lnode void printlist list l 列印線性表 void creatlist list l,int n 建立線性表 int getelem li...