線性表 順序表的操作

2021-05-27 09:31:27 字數 2233 閱讀 1257

#include #include #define list_init_size 100;

#define lise_increment 10;

//定義乙個列舉常量,預設no = 0, ok = 1

enum status;

typedef struct sqlist

sqlist;

//順序表的初始化操作,就是為順序表分配乙個預定義大小的陣列空間,

//並將線性表的當前長度設為『0』,意思是當前陣列中有0個元素。

//已經為陣列分配了一定的記憶體空間,只是裡面沒放東西而已。

//實質上,就是定義乙個變長陣列。

//&l是乙個位址,實質上是乙個結構體的首位址,也就是用指標指向結構體首位址代表乙個順序表

status initlist_sq(sqlist &l)

//順序表的插入操作,主要是第n至i(共n-i+1)個元素依次後移動乙個位置

status listinsert_sq(sqlist &l, int i, int e)

int *q;//q為插入位置

q = &(l.elem[i-1]);

for(p=&(l.elem[l.length-1]); p>=q; ++p)

*(p+1) = *p;//插入位置及之後的元素右移動

*q = e;//插入e

++l.length;//元素個數增1

return ok;

}

#include #include #define init_list_size 100

#define listincrement 10

enum status ;

//定義乙個順序表的結構體

typedef struct

sqlist;

status init_sqlist(sqlist &l)

status insert_sqlist(sqlist &l, int i, int e)

int *loc, *p;//loc為插入位置,p為操作指標

loc = &(l.a[i-1]);

for(p = &(l.a[len - 1]); p >= loc; --p)

*(p+1) = *p;//移動元素的操作-

*loc = e;//插入e

++l.len;//表長增1

return ok;  

}順序表插入運算步驟總結:

1, 初始化乙個空順序表

2, 判斷插入位置是否合法

3, 若表滿,分配新的空間,已被移動元素後,能在表中騰出位置以供插入

4, 從表尾依次移動元素,在待插入位置騰出乙個空位

5, 插入元素

6, 表長增1.

//在順序表中刪除第i個元素

status delete_sqlist(sqlist &l, int i, int &e)

順序表刪除元素運算總結:

1, 判斷刪除位置是否合法

2, 將操作指標p指向待刪除的元素的儲存位置

3, 將待刪除元素的值取出,複製給e

4, 確定表尾元素的儲存位置。

5, 迴圈處理操作指標p,移動元素,將後一項賦值給前一項,刪除待刪元素

6, 表長減1

//順序表合併

status merge_sqlist(sqlist la, sqlist lb, sqlist &lc)

//lb已經取完,只取la元素的情況下

while(pa <= pa_last)

*pc++ = *pa++;

//la已經取完,只取lb元素的情況下

while(pb <= pb_last)

*pc++ = *pb++;

return ok;

}兩個有序順序表合併的運算總結:

1,先設定兩個操作指標pa,pb,分別指向已有順序表la,lb的首位址。

2,再定義兩個指標pa_last,pb_last,分別指向已有順序表la,lb的表尾位址,

以便於判斷pa,pb是否滑動到la,lb表尾。

3,通過初始化pc指標的方式來定義lc順序表,預先給lc開闢長度為la.len + lb.len的空間。

4,la與lb都沒有取完的情況下,通過比較取得兩個表中元素的較小者,放入lc中。

5,lb已經取完,只取la元素並將其放到lc中。

6,la已經取完,只取lb元素並將其放到lc中。

線性表之順序表操作

求後繼是指 輸入乙個元素值 而不是位置 求該元素在順序表中的直接後繼元素值。注意 對每個功能進行測試時,要求把不合法的情況也測試一下。具體見下面的測試用例。3 驗收 測試用例 通過選單呼叫各個操作,測試點 沒有初始化前進行其他操作,程式是否能控制住 即,如果沒有初始化線性表,其他的功能是無法正常進行...

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

實驗內容 建立順序表,實現求表的長度 遍歷表 查詢 插入和刪除元素 求前驅 求後繼等操作 實驗基本要求 進一步熟悉 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...