这个C++程序的问题出在哪?

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:06:21
#include <iostream>
using namespace std;
struct list
{
int data;
list *llink,*rlink;
};
list *Creat()
{
int j,n;
cout<<"please input the quantity of the numbers: ";
list *h,*s,*r;
r=h=NULL;
cin>>n;
for(j=1;j<=n;j++)
{
s=new list;
cin>>s->data;
if(h==NULL)
h=s;
else
{
r->rlink=s;
s->llink=r;
}
r=s;
}
r->rlink=h;
h->llink=r;
return h;
}
void Display(list *h)
{
list *p;
if(h==NULL)
{
cout<<"failure"<<endl;
return ;
}
p=h;
cout<<"the list is :"<<endl;
do
{
cout<<p->data<<" ";
p=p->rlink;
}while(p!=h);
cout<<endl;
}
void Search(list *head,list *p)
{
p=head;

while(p1->llink!=p2||p1!=p2);
这个控制循环错了,因为当p1==p2或者p1->llink==p2时退出循环,所以应改为
while(p1->llink!=p2&&p1!=p2);
或者改为while(!((p1==p2)||(p1->llink==p2)));

大概看了一下你的程序,应该是建立一个链表,然后再显示链表或者查找链表中的某个元素吧。程序陷入死循环的原因是执行do语句的时候,当没有找到要查询的元素时,不会跳出。而且问题出在里面的循环,我看了一下,你外面的循环条件没有问题。
while(p1->llink!=p2||p1!=p2);
这个判断有问题,你仔细想想这个条件什么时候不能满足。你的意思应该是遍历表之后就跳出吧。再看看吧。

提一点建议吧.这应该是一个C++的程序,但是里面的却没有用类来写,完全是C语言的模式.