用c语言单链表将一个求交集的函数改成求并集的函数,函数如下
答案:1 悬赏:40
解决时间 2021-01-17 10:33
- 提问者网友:喧嚣尘世
- 2021-01-16 17:21
用c语言单链表将一个求交集的函数改成求并集的函数,函数如下
最佳答案
- 二级知识专家网友:渡鹤影
- 2021-01-16 18:56
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的情况
{
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的情况
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息