📄 a实验解答.txt
字号:
#include "stdio.h"
#include "malloc.h"
struct node
{ int data;
struct node *next;
};
typedef struct node *pointer, *lklist;
lklist setup ( )
{ lklist head; pointer p,q; int x;
head=( lklist )malloc(sizeof(lklist) ); q=head;
scanf("%d",&x);
while (x!=0)
{ p=(pointer )malloc(sizeof(pointer)) ; p->data=x;
q->next=p;
q=p;
scanf("%d",&x);
};
q->next=0;
return(head);
};
void display (lklist head)
{ pointer p;
p=head->next;
while (p!=0)
{ printf("%5d",p->data ); p=p->next;};
}
/* 删去 head1 中已在head2存在的结点 */
void function1 (lklist head1, lklist head2)
{ pointer p,q,s;
p=head1;
while (p->next)
{ q=head2->next;
while (q && q->data!=p->next->data) q=q->next;
if (q) { s=p->next;p->next=s->next;free(s);}
else p=p->next;
}
}
/* 删去 head1 中那些不在head2存在的结点 */
void function2 (lklist head1, lklist head2)
{ pointer p,q,s;
p=head1;
while (p->next)
{ q=head2->next;
while (q && q->data!=p->next->data) q=q->next;
if (!q) { s=p->next;p->next=s->next;free(s);}
else p=p->next;
}
}
/* 求两集合的并集*/
void function3 (lklist head1, lklist head2)
{ pointer p,q,s;
q=head2;
while (p->next)
{ p=head1;
while (p->next && p->next->data!=q->next->data) p=p->next; if(!p->next){ s=q->next;q->next=s->next;
s->next=head1->next; head1->next=s;
}
else q=q->next;
}
}
/* 求两集合的差集 */
void function4 (lklist head1, lklist head2)
{ pointer p,q,s;
p=head1;
q=head2;
while ( p->next )
{ q=head2;
while (q->next && q->next->data!=p->next->data) q=q->next;
if (q->next) { s=p->next;p->next=s->next;free(s);
s=q->next;q->next=s->next;free(s);}
else p=p->next;
}
p->next=head2->next;free(head2);
}
/* 两有序集合的合并 */
void function5 (lklist head1, lklist head2)
{ pointer p,q,s;
p=head1; q=head2;
while (p->next)
{
while (p->next && p->next->data<q->next->data) p=p->next;
if (p->next) { s=q->next;q->next=s->next;s->next=p->next;
p->next=s; p=s;}
else { p->next=q->next;free(head2);break;}
}
}
main()
{ lklist h1=0,h2=0;
h1=setup();
h2=setup();
function5(h1,h2);
printf("\n\n\n");
display(h1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -