資料結構 順序表

2022-05-04 20:48:07 字數 2134 閱讀 8865

從結構性上考慮,通常將data 和last 封裝成乙個結構作為順序表的型別:

typedef struct

seqlist;

順序表的初始化即構造乙個空表,這對表是乙個加工型的運算,因此,將l設為指標引數,首先動態分配儲存空間,然後,將表中last

指標置為-1,表示表中沒有資料元素。演算法如下:

seqlist *init_seqlist( )

演算法2.1

設呼叫函式為主函式,主函式對初始化函式的呼叫如下:

main()

線性表的插入是指在表的第i個位置上插入乙個值為x

的新元素,插入後使原表長為n的表:

(a1,a2,... ,ai-1,ai,ai+1,... ,an)

成為表長為n+1

表:(a1,a2,...,ai-1,x,ai,ai+1,...,an ) 。

i 的取值範圍為1<=i<=n+1 。

順序表上完成這一運算則通過以下步驟進行:

(1) 將ai~an

順序向下移動,為新元素讓出位置;

(2) 將x 置入空出的第i個位置;

(3) 修改last

指標(相當於修改表長),使之仍指向最後乙個元素。

演算法如下:

int insert_seqlist(seqlist *l,int

i,datatype x)

/*表空間已滿,不能插入*/

if (i<1 || i>l->last+2)

/*檢查插入位置的正確性*/

for(j=l->last;j>=i-1;j--)

l->data[j+1]=l->data[j]; /*

結點移動*/

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

l->last++;

/*last仍指向最後元素*/

return (1); /*插入成功,返回*/

}演算法2.2

本演算法中注意以下問題:

(1)

順序表中資料區域有maxsize個儲存單元,所以在向順序表中做插入時先檢查表空間是否滿了,在表滿的情況下不能再做插入,否則產生溢位錯誤。

(2)

要檢驗插入位置的有效性,這裡i 的有效範圍是:1<=i<=n+1,其中n 為原表長。

(3) 注意資料的移動方向。

線性表的刪除運算是指將表中第i 個元素從線性表中去掉,刪除後使原表長為n 的線性表:

(a1,a2,... ,ai-1,ai,ai+1,...,an)

成為表長為n-1

的線性表:

(a1,a2,... ,ai-1, ai+1,... ,an)。

i 的取值範圍為:1<=i<=n 。

順序表上完成這一運算的步驟如下:

(1) 將ai+1~an 順序向上移動。

(2)

修改last指標(相當於修改表長)使之仍指向最後乙個元素。

演算法如下:

int delete_seqlist(seqlist *l;int i)

for(j=i;j<=l->last;j++)

l->data[j-1]=l->data[j];

/*向上移動*/

l->last--;

return(1); /*刪除成功*/

}演算法2.3

本演算法注意以下問題:

(1)刪除第i個元素,i的取值為1<=i<=n

,否則第i個元素不存在,因此,要檢查刪除位置的有效性。

(2)當表空時不能做刪除,因表空時l->last的值為-1,條件(i<1 ||

i>l->last+1)也包括了對錶空的檢查。

(3)刪除ai 之後,該資料已不存在,如果需要,先取出ai

,再做刪除。

起依次和x比較,直到找到乙個與x相等的資料元素,則返回它在順序表中的儲存下標或序號(二者差一);或者查遍整個表都沒有找到與x

相等的元素,返回-1。

演算法如下:

int location_seqlist(seqlist *l, datatype x)

演算法2.4

本演算法的主要運算是比較。顯然比較的次數與x在表中的位置有關,也與表長有關。當a1=x

時,比較一次成功。當an=x 時比較n 次成功。平均比較次數為(n+1)/2,時間效能為o(n)。

資料結構 順序表

順序表的特徵 1由唯一的表名標識 2佔據一塊連續的儲存空間 3資料順序存放,元素之間有先後關係 定義動態的順序表 define maxsize 100 typedef struct sqlist 這個結構體型別存放的是順序表的資訊和順序表的資料 初始化順序表 void initsqlist sqli...

資料結構 順序表

順序表示最簡單的乙個資料結構,直接貼 吧,因為比較簡單。include include typedef struct sqlist sqlist void initlist sqlist l l length 0 void getelem sqlist l 初始化 l length j printf...

資料結構順序表

include include include include include include include include include include include include include include using namespace std define maxn 100000...