#include
using namespace std;
struct linklist
{
int data;
struct linklist *next;
};
void create(int elements[], int num, struct linklist*);
void Union(struct linklist* la, struct linklist* lb, struct linklist*);
void Free(struct linklist* l);
/********************************************/
// name: main //
// parameter: none //
// return : none //
// details: //
/********************************************/
void main()
{
//初始化链表时用到的数组
int elements_1[10] = {1,2,3,4,5,6,7,8,9,10};
int elements_2[5] = {9,10,11,12,13};
//两个链表la,lb和归并结果链表lc
struct linklist *la = (struct linklist*)malloc(sizeof(linklist));
struct linklist *lb = (struct linklist*)malloc(sizeof(linklist));
struct linklist *lc = (struct linklist*)malloc(sizeof(linklist));
//创建链表
create (elements_1, 10, la);
create (elements_2, 5, lb);
//归并
Union(la, lb, lc);
Free(lc);
free(la);
free(lb);
elements_1[1]=2;
}
/********************************************/
// name: Free //
// parameter: *linklist //
// return : none //
// details: 归并 //
/********************************************/
void Free(struct linklist* l)
{
struct linklist* p;
struct linklist* q;
p = (*l).next;
while (p!=NULL)
{
q = p;
p = (*p).next;
free(q);
}
free(l);
}
/********************************************/
// name: Union //
// parameter: linklist,linklist //
// ,*linklist //
// return : none //
// details: 归并 //
/********************************************/
void Union(struct linklist *la, struct linklist *lb, struct linklist* lc)
{
//建立移动指针
struct linklist *pa;
struct linklist *pb;
struct linklist *pc;
pa = (*la).next;
pb = (*lb).next;
pc = lc;