线性表的合并

/*
	线性表的合并 
*/ 
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <stdbool.h>
typedef int ElemType;

typedef struct Lnode{
	ElemType data;
	struct Lnode * next;
}LNode, * LinkList;

/*
	单链表的建立:尾插法 
*/
LinkList CreateList_R(){
	LinkList L = (LinkList)malloc(sizeof(LNode));
	L->next = NULL;
	int x;
	LinkList p, r = L; 
	scanf("%d", &x);
	while(x != 9999){
		p = (LinkList)malloc(sizeof(LNode));
		p->data = x;
		p->next = NULL;
		r->next = p;
		r = p; 
		scanf("%d", &x);
	} 
	return L;
}

/*
	求单链表L的长度 
*/
int ListLength_L(LinkList L){
	int len = 0;
	LinkList p;
	p = L->next;
	while(p){
		p = p->next;
		len++;
	}
	return len;
}

/*
	取值:取单链表中第i个元素的内容 
*/
int  GetElem_L(LinkList L, int i, ElemType * e){
	LinkList p;
	p = L->next;
	int j = 1;
	while(p && i > j){
		p = p->next;
		j++;
	}
	if(!p || j > i ) return 0;
	*e = p->data;
	return 1;
}

/*
	查找:按值查找:根据指定数据获取数据所在位置(序号)
*/
int LocateElem_L2(LinkList L, ElemType e){
	LinkList p;
	p = L->next;
	int j = 1;
	while(p && p->data != e){
		p = p->next;
		j++;
	}
	if(p)return j;
	else return 0;
}
/*
	插入:在第i后结点插入新结点 
*/
int ListInsert_L(LinkList L, int i, ElemType e){
	LinkList p;
	p = L;
	int j = 0;
	while(p && i-1 > j){
		p = p->next;
		j++;
	}
	if(!p || j > i - 1) return -1;
	LinkList s = (LinkList)malloc(sizeof(LNode));
	s->data = e;
	s->next = p->next;
	p->next = s;
	return 1;
}

/*
	线性表的合并 
*/ 
void Union(LinkList La, LinkList Lb){
	int La_len = ListLength_L(La);
	int Lb_len = ListLength_L(Lb);
	int i;
	int e;
	for(i = 1; i <= Lb_len; i++){
		GetElem_L(Lb, i, &e);
		if(!LocateElem_L2(La, e)){
			ListInsert_L(La, La_len++, e);
		}
	}
}

/*
	链表的遍历 
*/
void traverse_list(LinkList L){
	LinkList p;
	p = L->next;
	while(p){
		printf("%d ", p->data);
		p = p->next;
	}
	printf("
");
	return;
}
int main(){
	//第一个单链表La
	printf("--------------创建第一个单链表------------
"); 
	LinkList La = CreateList_R();
	//第二个单链表La
	printf("--------------创建第二个单链表------------
");
	LinkList Lb = CreateList_R();
	Union(La, Lb);
	traverse_list(La);
	return 0;
}
我亦无他,惟手熟尔
原文地址:https://www.cnblogs.com/AsuraPlus/p/15415732.html