数据结构 把两个单链表中相同的数字找出来并赋给第三个链表,但是不重复显示 10

2个链表(LinkList){2,5,5,5,8,-6,0,0,5}和{4,5,3,4,8,9},满足C=A∩B={5,8}我打的代码打出来最后显示的C会变成{5,5,5... 2个链表(LinkList){2,5,5,5,8,-6,0,0,5} 和 {4,5,3,4,8,9} ,满足C=A∩B={5,8}

我打的代码打出来最后显示的C会变成{5,5,5,5,8} 求大神帮我看看
void intersection(LinkList A, LinkList B)
{
LinkList pa,pb;
pb=B->next;
LinkList C= (LinkList )malloc(sizeof(LNode));
LinkList tail1 = C;
LinkList pc;
while(pb!=NULL)
{
pa=A->next;
while(pa!=NULL)
{
if(pa->data==pb->data)
{

LNode *np = (LNode*)malloc(sizeof(LNode));
np->data =pa->data;
np->next = NULL;
tail1->next = np;
tail1 = np;

}
pa=pa->next;
}
pb=pb->next;
}
展开
 我来答
DJLMBLF2
2015-05-06 · TA获得超过147个赞
知道小有建树答主
回答量:82
采纳率:100%
帮助的人:68.9万
展开全部
首先说你的代码没问题,只是没有处理重复元素,现在给你提供几个思路:
1。在建立A链表和B链表的时候就去重
2。用一个辅助哈希数组标记C链表中的元素,保证不出现重复
3。每次在C链表中添加元素时都遍历一遍C链表,如果要添加的元素在C中已经出现,就不要添加了,否则,就添加
第一个最麻烦,但思路清晰,从源头解决问题,第二个最省时间,但要有额外的内存开销,第三个比较费时间,但对你来说,似乎最好实现。。。。请斟酌后修改代码。希望能帮到你。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式