发布网友 发布时间: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函数中并没有cout输出语句,
这样如何会有信息输出到界面呢?