線性表順序儲存基本操作

2022-07-01 03:09:09 字數 3038 閱讀 8977

//

線性表的基本操作

/*status,自定義的乙個列舉型別,

enum status

*/ status list_init(sqlistptr l);//

初始化線性表

void list_clear(sqlistptr l);//

清空線性表

void list_destory(sqlistptr l);//

銷毀線性表

bool list_empty(sqlistptr l);//

判斷線性表是否為空

int list_size(sqlistptr l);//

線性表中元素的個數或線性表的長度

status list_retrival(sqlistptr l,int pos,elemtype *elem);//

status list_locate(sqlistptr l,elemtype elem,int *pos);//

status list_prior(sqlistptr l,int pos,elemtype *elem);//

status list_next(sqlistptr l,int pos,elemtype *elem);//

//以上函式的引數是指標型別的,通常是指:我們希望通過函式所獲得結果放到指標當中

status list_insert(sqlistptr l,int pos,elemtype elem);//

status list_delete(sqlistptr l,int pos)://

//

定義線性表的結構體

#define list_tnit_size 100 //

線性表初始大小100

#define list_increament 10 //

增量 typedef int

elemtype;

typedef struct

sqlistsqlist,*ptr;

typedef ptr sqlistptr;

一、線性表的順序儲存結構

1、初始化—建立線性表

//

初始化,建立線性表

status list_init(sqlistptr l)

2、線性表順序儲存結構上的查詢(按位置查詢值、按值查詢位置)

//

按位置查詢

status list_retrival(sqlistptr l,int pos,elemtype *elem)

else

s=fatal;//

查詢失敗

return s;//

返回函式狀態

}

//

按值查詢

status list_locate(sqlistptr l,elemtype elem,int *pos)} }

else

s=fatal;//

查詢失敗

return s;//

返回函式的狀態

}

注:如果找到了就不找到需要再往後面找了,break跳出for迴圈,該按值查詢的時間複雜度,最好的情況就是在第乙個位置就找到,只需要比較1次,最壞的情況所查元素在最後乙個或沒有,需要比較n次,平均比較n/2次,時間複雜度是o(n)。

3、線性表的順序儲存—插入操作

注:順序表上實現插入操作需要移動表中一辦的資料元素。時間複雜度為o(n),最壞的情況是在第乙個元素插入(i=1),需要向後移動n個元素。這種順序儲存結構需要移動大量的資料元素,而每個資料元素可能是佔據很大的記憶體空間,所以這種方法的效率是很低的。

4、線性表的順序儲存—刪除操作

//

線性表的順序儲存—刪除操作

status list_delete(sqlistptr l,int pos)

}else

s=fail;//

刪除失敗

return s; //

返回函式狀態

}

注:插入和刪除的基本操作就是移動資料元素,最好的情況下,刪除最後乙個,移動乙個元素;最差的情況下,刪除第乙個元素,移動n-1個元素;平均情況下:刪除第i個元素,需要移動第n-i個元素

5、銷毀線性表

//

銷毀線性表

void

list_destry(sqlistptr l)

6、清空線性表

void

list_clear(sqlistptr l)

7、判斷線性表是否為空

//

判斷線性表是否為空

bool

list_empty(sqlistptr l)

//或者用下面的函式也可以判斷

bool

list_empty(sqlistptr l)

8、求線性表的前驅

status list_prior(sqlistptr l,int pos,elemtype *elem)

else

s=fail;

return

s;}

9、求線性表長度

//

求線性表長度

intlist_length(sqlistptr l)

10、求線性表的後繼

//

求線性表的後繼

status list_next(sqlistptr l,int pos,elemtype *elem)

else

s=fail;

return

s;}

線性表順序儲存的基本操作

線性表的操作主要包括如下幾個 初始化,插入,刪除,查詢 單個元素所在的位置,某個位置的具體元素,查詢所有的元素 判斷是否為空,兩個線性表合併 當需要對線性表進行修改的時候,要傳遞線性表變數的位址。否則的話,只需要傳遞傳遞變數即可 至於原因 想想當初自定義函式中對兩個元素進行交換的實現 include...

線性表順序儲存結構基本操作

線性表 線性表 list 每個元素型別均為datatype。operation initlist l 初始化操作,建立乙個空的線性表l。listempty l 若線性表為空,返回 true 否則返回 false。clearlist l 將線性表清空。getelem l,i,e 將線性表 l中的第 i...

線性表的順序儲存及基本操作

include include define init size 10 線性表初始容量 define increment size 5 當線性表容量不夠時,增加元素之前,線性表增長量 define overflow 5 記憶體分配失敗後的退出代號 typedef struct sequencelis...