
對於非空的線性表或線性結構,其特點是:
線性表的抽象資料型別定義如下:
adt list(線性表)
; 每個元素的型別均為datatype。
資料關係:一對一的關係,每個元素有乙個或零個前驅或後繼。
} operation(基本操作)
}
線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素,邏輯上相鄰的資料元素,其物理次序也是相鄰的。如下圖所示:位址計算方法:假設線性表中每個元素需要占用c個儲存單元,並以所佔的第乙個單元的儲存位址作為資料元素的儲存起始位置。則線性表中第i+1個資料元素與第i個資料元素的關係如下:
loc() + c一般來說,線性表的第i個資料元素的儲存位置為:loc()=loc(如圖所示:![]()
由此,只要確定了儲存線性表的起始位置,那麼線性表中的任一元素我們都可以對其進行增、刪、改的操作,所以線性表的順序儲存結構是一種隨機訪問的儲存結構。
由於高階程式設計語音的陣列型別也有隨機訪問的特性,因為通常用陣列來描述資料結構中的順序儲存結構。
在此,由於線性表長度可變,且所需儲存空間也隨問題不同而不同,所以我們用動態分配一維陣列來表示線性表。
開始之前我們規定一下預定義常量及型別:
順序表的偽碼儲存結構描述:(以下語言都為類c偽碼,除具體實現**以外)#define ok 1
#define error 0
#define overflow -2
typedef int status;
順序表中的基本操作實現:1.順序表的初始化【演算法步驟】#define maxsize 100 //順序錶可達到的最大長度
typedef struct
sqlist; //順序表的結構型別為sqlist
2.順序表的取值o(1)【演算法步驟】status initlist(sqlist &l)
3.順序表的查詢status getelem(sqlist l,int i,elemtype &e)
o(n)
【演算法步驟】。
5.順序表的刪除int locateelem(sqlist l,elemtype e)
o(n)
【演算法步驟】
7.將線性表清空status listdelete(sqlist &l,int i)
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...