我是c ++中的新手,现在我正在尝试在队列中找到一个特定的数字,但它不起作用,我收到了这个错误:
我正在做的是:
#include <iostream>
using namespace std;
typedef struct node {
int data;
node * next;
}queue;
queue *Q, *first, *final=NULL;
void push()
{
int number;
cout<<"Enter the number: ";
cin>>number;
Q=new node;
Q->data=number;
Q->next=NULL;
if(first==NULL)
{
final=first=Q;
}
else
{
final->next = Q;
final = Q;
}
}
void findElement(node q ,int number)
{
node * Q=q;
int i=0,flag=0;
while(Q!=NULL)
{
if(Q->data==number)
{
cout<<"Found in position: "<<i<<endl;
flag=1;
}
Q=Q->next;
i++;
}
if(flag==0)
{
cout<<"\n\nNot found..."<<endl;
}
}
int main()
{
int number,x;
node *q=NULL;
cout<<"1 Push"<<endl;
cout<<"2 Find"<<endl;
cin>>x;
do
{
switch (x)
{
case 1:
push();
break;
case 2:
cout<<"\n\nEnter the number you want to find: ";
cin>>number;
findElement(q,number);
break;
default:
cout<<"Invalid option..."<<endl;
break;
}
}while (x!=0);
}
我知道我的节目可能真的很糟糕,但我正在努力学习,所以如果你能告诉我我做错了什么,那对我来说意义重大。 提前谢谢。
答案 0 :(得分:0)
您可能涉及其他问题,但对于这些特定错误,您尝试将节点复制到节点*。后者是一个指针。
//This won't work.
node * Q=q;
// This will. (However...)
node* Q = &q;
同样,在第71行
findElement( q, number);
q类型为node *(指向节点的指针),但findElement采用类型节点。也许你应该改变 findElement(node q,int number) 至 findElement(node * q,int number)
指针可能需要一段时间来包裹你的头,语法是微妙的。然而,它们是该语言的关键点 http://www.cplusplus.com/doc/tutorial/pointers/ http://www.tutorialspoint.com/cplusplus/cpp_pointers.htm