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

2021-07-26 04:52:22 字數 2355 閱讀 1192

/*

線性表的操作主要包括如下幾個:

初始化,插入,刪除,查詢(單個元素所在的位置,某個位置的具體元素,查詢所有的元素),判斷是否為空,兩個線性表合併

*//// 當需要對線性表進行修改的時候,要傳遞線性表變數的位址。否則的話,只需要傳遞傳遞變數即可

/// 至於原因: 想想當初自定義函式中對兩個元素進行交換的實現

#include #include typedef int elemtype;

#define maxsize 100

#define ok 1

#define error 0

typedef struct

seqlist;

/// 初始化線性表為空

void initlist(seqlist *l)

/// 返回線性表的長度

/// 如果等於負數,此時沒有元素

elemtype listlength(seqlist l)

/// 查詢元素的位置

/// 查詢e,如果能找到則返回當前所處的位置,如果找不到則返回-1

elemtype locate(seqlist l, elemtype e)

/// 插入元素

elemtype inslist(seqlist *l, int i, elemtype e)

if(i == l->last + 1)

int k;

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

l->elem[k + 1] = l->elem[k];

l->elem[i - 1] = e;

l->last ++;

return ok;

}/// 刪除第i位置的元素, 並返回此位置的元素

elemtype dellist(seqlist *l, int i, elemtype *e)

/// 獲取要刪除的元素

*e = l->elem[i - 1];

int k;

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

l->elem[k - 1] = l->elem[k];

l->last --;

return ok;

}/// 獲取線性表中的資料

void getdata(seqlist l, int i = -1)

/// 否則的話,獲取指定位置的元素

printf("當前位置的元素為:%d\n",l.elem[i - 1]);

return;

}/// 判斷線性表是否為空,如果為空的話,則返回1

elemtype emptylist(seqlist l)

/// 清空線性表

void clearlist(seqlist *l)

///線性表的合併操作, 兩者都含有的元素只記錄一次

void mergelist(seqlist l1, seqlist l2, seqlist *l3)

/// 如果已經出現過則不記錄,沒出現過則記錄

if(flag == 0)

}}int main()

printf("當前線性表的長度為:%d\n", listlength(l));

getdata(l);

/// 查詢指定元素所在的位置

flag = locate(l, 7);

if(flag == -1)

printf("指定的元素不存在!\n");

else

printf("指定元素所在的位置為:%d\n", flag);

flag = emptylist(l);

if(flag == 0)

printf("線性表不為空!\n");

else

printf("線性表為空\n");

clearlist(&l);

/// 對兩個線性表進行合併的操作

seqlist l1, l2, l3;

initlist(&l1);

initlist(&l2);

initlist(&l3);

printf("此時線性表l3的長度為%d\n", l3.last);

for(i = 0;i < 10; i ++)

inslist(&l1, i + 1, i);

int j = 0;

for(int i = 0;i < 20;i ++)

inslist(&l2, ++ j, i);

mergelist(l1, l2, &l3);

printf("此時線性表l3的長度為%d\n", l3.last);

getdata(l3);

return 0;

}

線性表順序儲存基本操作

線性表的基本操作 status,自定義的乙個列舉型別,enum status status list init sqlistptr l 初始化線性表 void list clear sqlistptr l 清空線性表 void list destory sqlistptr l 銷毀線性表 bool ...

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

線性表 線性表 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...