1、设A、B递减有序(int型)的单链表;
2、编写函数利用原结点将它们合并成一个递增有序的单链表;
3、相同元素只保留一个;
4、只能利用原来的结点空间。
*解法同2017,2021也一样,南航爱考。
//2019
//算法思想:用A当“新表”,不断把最大的数加入进去,把重复的数删除
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList function(LinkList A,LinkList B){
LinkList p=A->next,q=B->next,s=NULL;
A->next=NULL; //把A与后面的元素脱离
while(p&&q){
if(p->data < q->data){ //把最大的拿出来
s=q->next;
q->next=A->next;
A->next=q;
q=s;
}
else if(p->data == q->data){
s=q;
q=q->next;
B->next=s->next; //保证链表不断开
free(s);
s=p->next; //删了q,但是p要加入链表,所以s跑来帮p定位下一个元素
p->next=