#include<iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE - 1
#define OVERFLOW - 2
#define SIZE 4
typedef int Status;
typedef struct Lnode {
int data;
struct Lnode* next;
}Lnode, *LinkList;
Status InitList(LinkList& L) {
L = new Lnode;
L->next = NULL;
return OK;
}
void CreateList_R(LinkList& L, int n) {
InitList(L);
LinkList r = L;
for (int i = 0; i < n; i++) {
LinkList p = new Lnode;
cin >> p->data;
p->next = r->next;
r->next = p;
r = p;
}
}
//查找函数
Status SearchList(LinkList& L,int e) {
LinkList p = L->next;
while (p && p->data != e) {
p = p->next;
}
if (!p) return ERROR;
return OK;
}
//合并函数
void MergeList(LinkList& L1, LinkList& L2) {
LinkList p1 = L1->next;
while (p1->next) {
p1 = p1->next;
}
LinkList p2 = L2->next;
while (p2) {
Status index = SearchList(L1, p2->data);
if (index) p2 = p2->next;
else {
LinkList q = new Lnode;
q->data = p2->data;
q->next = NULL;
p1->next = q;
p1 = q;
p2 = p2->next;
}
}
}
//打印链表
void printList(LinkList& L) {
LinkList p = L->next;
while (p) {
cout << p->data << " ";
p = p->next;
}
}
void main() {
LinkList L1,L2;
int n, m;
cout << "请输入A集合元素个数以及元素:" << endl;
cin >> n;
CreateList_R(L1, n);
cout << "请输入B集合元素个数以及元素:" << endl;
cin >> m;
CreateList_R(L2, m);
cout << "请将A集合与B集合合并,并打印合并后的A集合:" << endl;
MergeList(L1, L2);
printList(L1);
}
线性表的合并
最新推荐文章于 2024-04-05 16:54:53 发布