線性表的歸併(分別用順序儲存和鏈式儲存實現)

2021-10-10 08:32:12 字數 3085 閱讀 8049

題目描述:已知順序線性表la和lb的元素按值非遞減排列。歸併la和lb得到新的順序線性表lc,lc的元素也按值非遞減排列。

採用順序儲存形式,該程式還新增了歸併以外的幾個功能,可供使用參考。

#include

#include

#define ok 1

#define error 0

#define overflow -1

#define list_size 50

#define increace 50

typedef

struct

sqlist;

typedef

int status;

status initlist

(sqlist* l)

status createlist

(sqlist* l)

printf

("構建完成!");

return ok;

}status show

(sqlist l)

for(

int i =

0;i < l.length;i++

)printf

("-----陣列長度為:%d\n\n"

, l.length)

;return ok;

}status listinsert

(sqlist* l,

int p,

int v)

for(

int j = l->length;j >= p;j--

) l->elem[p -1]

= v;

l->length++

;return ok;

}status listdelete

(sqlist* l,

int p,

int* v)

l->length--

;return ok;

}status listsearch_position

(sqlist l,

int p)

status listsearch_value

(sqlist l,

int v)

printf

("\n未找到值為%d的元素"

, v)

;exit

(error);}

status listclean

(sqlist* l)

printf

("\n線性表清空!");

return ok;

}void

mergelist

(sqlist la, sqlist lb, sqlist* lc)

while

(pa <= pa_last)

*pc++

=*pa++

;//插入la的剩餘元素

while

(pb <= pb_last)

*pc++

=*pb++

;//插入lb的剩餘元素

}// mergelist_sq

void

main()

執行結果截圖

該程式中也包含了歸併所用函式以外的其他鍊錶操作,可以供使用參考。

#include

#include

#define ok 1

#define error 0

#define overflow -1

typedef

struct lnodelnode,

* linklist;

typedef

int status;

status initlinklist

(linklist* l)

status createlinklist_tail

(linklist l)

return ok;

}status createlinklist_head

(linklist l)

return ok;

}lnode*

getnode

(linklist l,

int p)

return q;

}status locatenode

(linklist l,

int v)

return locate;

}status linklistlength

(linklist l)

return length;

}status linklistinsert

(linklist l,

int p,

int v)

status linklistdelete

(linklist l,

int p,

int* v)

status show

(linklist l)

lnode* p = l->next;

printf

("鍊錶元素輸出:");

while

(p !=

null

)printf

("-----鍊錶長度為%d\n\n"

,linklistlength

(l))

;return ok;

}linklist mergelist

(linklist la, linklist lb)

else

}while

(pa !=

null

)while

(pb !=

null

) pc->next =

null

;printf

("歸併函式呼叫!");

return lc;

}void

main()

執行結果截圖

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

1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...

線性表順序儲存

線性表順序儲存結構的建立 插入結點 刪除結點 就地逆置。include stdio.h include malloc.h typedef struct slist,list void init list 線性表初始化 void insert list s,int p 線性表插入 void delet...

線性表順序儲存

時間複雜度效率 o 1 o logn o n o nlogn o n 2 o n 3 o 2 n o n o n n 線性表順序儲存 線性表 順序儲存 include include define maxsize 1024 typedef int elementtype typedef struct...