设A和B是两个单链表(带头结点),其中元素递增有序。设计一个算法从A和B中的公共元素产生新链表C,要求不破坏A,B。
·
算法思想:设置两个指针分别指向A和B,依次遍历A和B,如果A中元素小于B中元素,则指向A链表的指针后移,如果指向B链表的元素小于A链表元素,则B链表指针后移,如果相等则创建一个新结点保存所指元素值,并插入C中。
void Creatsame(LinkList A,LinkList B){
LNode *p=A->next,*q=B->next;
LinkList C=(LinkList)malloc(sizeof(LNode));//建立一个新链表
LNode *r=C;
while(p!=NULL&&q!=NUUL){
if(p->data<q-data)//如果p所指元素小于A
p=p->next;//p指针后移
else if(q->data<p->data)//如果p所指元素大于A
q=q->next;//q指针后移
else(p->data==q->data)//如果相等
s=(LNode*)malloc(sizeof(LNode));//申请一个新结点
s->data=p->data;//保存相等数据
s=r->next;//尾插法插入新链表
r=s;
r->next=NULL;//尾指针置空
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)