struct Link *Union(struct Link *head1, struct Link *head2)
{
struct Link *p1 = head1->next, *p2 = head2->next;
struct Link *head, *p, *q;
head = (struct Link *)malloc(sizeof(struct Link));
head->next = NULL;
p = head;
while ((p1 != NULL) && (p2 != NULL))
{
q = (struct Link*)malloc(sizeof(struct Link));
q->next = NULL;
if (p1->data == p2->data)
{
q->data = p1->data;
p1 = p1->next;
p2 = p2->next;
}
else if (p1->data < p2->data)
{
q->data = p1->data;
p1 = p1->next;
}
else
{
q->data = p2->data;
p2 = p2->next;
}
p->next = q;
p = q;
}
if(p1 != NULL){
while(p1 != NULL){
q = (struct* Link)malloc(sizeof(struct Link));
q->next = NULL;
q->data = p1->data;
p1 = p1->next;
p->next = q;
p = q;
}
}else if(p2 != NULL){
q = (struct* Link)malloc(sizeof(struct Link));
q->next = NULL;
q->data = p2->data;
p2 = p2->next;
p->next = q;
p = q;
}
return head;
}
//适用于p1,p2链表都没有重复data的情况
作业帮用户
2017-07-10
举报