#include<bits/stdc++.h>
using namespace std;
typedef struct Node
{
int data;
struct Node * next;
}*node;
struct Node* createlist()
{
struct Node*headNode = (struct Node*)malloc(sizeof(struct Node));
headNode->next = NULL;
headNode->data = NULL;
return headNode;
}
struct Node* createNode(int data)
{
struct Node*newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->next = NULL;
newNode->data = data;
return newNode;
}
void insertByTail(struct Node*headNode,int data)
{
struct Node*newNode = createNode(data);
struct Node*tailNode = headNode;
while(tailNode->next != NULL)
{
tailNode = tailNode->next;
}
tailNode->next = newNode;
}
void printList(node list)
{
node i = list->next;
for(;i != NULL; i = i->next)
{
printf("%d ", i->data);
}
puts("");
}
void deleteNextNode(node i)
{
node temp = i->next;
i->next = i->next->next;
free(temp);
}
void Insert(node i, int data)
{
node j = createNode(data);
j->next = i->next;
i->next = j;
}
void merge(node A, node B)
{
node i = A->next;
node j = B->next;
node k = A;
for(;i != NULL;)
{
if(k->data == NULL || i->data != k->data)
{
i = i->next;
k = k->next;
}
else
{
deleteNextNode(k);
i = k->next;
}
}
i = A->next;
k = A;
for(; i != NULL && j != NULL;)
{
if(i->data < j->data)
{
if(k->data == NULL || i->data != k->data)
{
k = k->next;
}
i = i->next;
}
else if(i->data > j->data)
{
if(k->data == NULL || j->data != k->data)
{
Insert(k, j->data);
k = k->next;
}
j = j->next;
}
else
{
if(k->data == NULL || i->data != k->data)
{
k = k->next;
}
i = i->next;
j = j->next;
}
}
if(j != NULL)
{
for(;j != NULL; j = j->next)
{
if(k->data == NULL || j->data != k->data)
{
insertByTail(A, j->data);
k = k->next;
}
}
}
}
int main()
{
node A = createlist();
node B = createlist();
node C = createlist();
int i;
char c;
printf("输入链表A的数据:\n");
while(cin >> i)
{
insertByTail(A, i);
if(cin.get() == '\n')
break;
}
printf("输入链表B的数据:\n");
while(cin >> i)
{
insertByTail(B, i);
if(cin.get() == '\n')
break;
}
merge(A, B);
printf("合并后链表A为:\n");
printList(A);
return 0;
}
balabalabalabalabalabalabalabalabalabalabalabalabalabalabalabalabalabalabalabalabalabalabalabalabalabalabalabala