//線性表的基本操作
/*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、清空線性表
voidlist_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...