2014-10-17 497 views
0

我真的在C++的新手,现在我试图找到在队列中的具体数目,但它不工作,我得到这个错误:如何查找队列上的特定元素?

  • 34线不能转换“节点'到'节点*'的初始化。
  • 71行无法将'q'从'node *'转换为'node'。

我在做什么是这样的:

#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

将标题更改为void findElement(node * q,int number); – 2014-10-17 04:56:44

回答

0

你可能涉及的其他问题,但对于那些特定的错误,你想一个节点复制到节点*。后者是一个指针。

//This won't work. 
node * Q=q; 

// This will. (However...) 
node* Q = &q; 

同样,线71

findElement(q, number); 

q是类型节点*(指向节点),但findElement采用类型节点。也许你应该改变 findElement(节点q上,INT数) 到 findElement(节点* Q,INT数)

指针可能需要一段时间来包装你的头部周围,和语法是很微妙的。尽管如此,它们仍然是该语言的关键。
http://www.cplusplus.com/doc/tutorial/pointers/ http://www.tutorialspoint.com/cplusplus/cpp_pointers.htm

+0

谢谢我得到那部分指针,呃我猜.. 我做了你的建议,但程序不能正常工作,我的意思是我仍然没有找到数字的位置,你知道为什么吗? – EmilioS 2014-10-17 16:53:49

+0

有些东西不能用我的系统编译我从浏览器复制和粘贴的代码。我建议你在findElement()中加一个} else {子句来打印出内容。这至少会让你知道发生了什么。 – 2014-10-17 18:44:43

+0

好吧,我明白了,我做到了,现在在工作,非常感谢。 – EmilioS 2014-10-17 19:50:51