数据结构的两链表找公共元素

发布网友 发布时间:2022-04-23 03:40

我来回答

2个回答

热心网友 时间:2022-04-22 17:52

void same(LinkList &A,LinkList &B,LinkList &C) 
{
LinkList pa,pb,u,pc;
pa=A->next;
pb=B->next;

C = new LNode;// 添加
C->next = NULL;// 添加

pc = C;

while(pa!=NULL&&pb!=NULL) 
{
if(pa->data<pb->data)
pa=pa->next;
else if(pa->data>pb->data)
pb=pb->next; 
else 
{
u=new LNode; 
u->data=pa->data;
u->next = pc->next;//更改

pc->next=u; 
pc=u;

pa=pa->next;
pb=pb->next;

cout<<pc->data<< " ";
}
//pc->next=NULL;// 删除
}
cout << endl;
}

错误的地方已经标出来了,第一,C的空同节点没有开辟内存;第二,在找到公共元素时,向C中添加新节点的语句有误。

另外,该方法找两个链表的公共元素的前提条件是:链表是非递减的,即Lnode(i)->data <= Lnode(i+1)->data,否则该方法失效。

追问修改了,还是有问题,不知道是怎样回事,希望能帮我再看看

追答

我把整个程序的附件上传了,在VS2012上运行没问题,你看一下,再找找区别。运行结果截图:

热心网友 时间:2022-04-22 19:10

代码太乱就说能一眼看到的错误吧:

cout<<"相同的元素:"<<endl;
same(A,B,C);

这两句代码你是想输出相同的元素,但是你的same函数中并没有cout输出语句,

这样如何会有信息输出到界面呢?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com