问题
分析
1.题目有要求,不能破坏ab节点,所以只能创建新表
1.先找到两表相同的元素,再进行尾插法插入到链表c中
找相同的元素,在while(pa!=NULL&&pb!=NULL)给a设置p,给b设置q,判断p是否等于q
因为a、b表都是递增有序序列,所以可以设置三种情况,如果a的数值小于b,让a遍历到下一个值,再跟b比较;如果b的数值小于a,让b遍历下一个再跟a比较。如果a的数值等于b,建立新节点s,使其尾插到表c中
?若a和b一个表长一个表短?可以让未完结的那个再遍历对比一遍短的那个表while(pb!=NULL)
LinkList Create_Common(LinkList A,LinkList B)//不改变ab节点,只用传入就行,不用引用
{
LNode *p=A->next,*q=B->next;
LNode *r;//尾插法用尾指针r,再定义一个c的头结点
LinkList C=(LinkList)malloc(sizeof (LNode));//建新表一定要置空
C->next=NULL;
r=C;
while(p!=NULL&&q!=NULL){
if(p->data>q->data){
q=q-next;
}else if(p->data<q->data){
q=q->next;
}else{
s=(LNode*)malloc(sizeof(LNode));//建立节点,也是要插入c表的节点
s->data=p->data;//把p的数值赋给它
r-next=s;//尾插法
r=s;
p=p->next;
q=q->next;
}
r-next=NULL;//尾插法一定要给尾指针置空
return C;
}
}