2016-10-29 3 views
0

ich Hausaufgaben mit LinkedLists in der Hochschule für Datenstruktur haben,ungültige Operanden binäre Ausdruck (‚Ostream‘ (auch bekannt als ‚basic_ostream <char>‘) und ‚Leere‘)

der Code hat aber der Compiler ‚eclips‘ zeigt mir ein Fehler genannt Beschreibung Ressourcenpfad Ortstyp

ungültige Operanden binären Ausdruck ('ostream' (auch bekannt als 'basic_ostream') und 'Leere') LinkedLists.cpp/LinkedLists/src Leitung 156 C/C++ Problem

und das ist der Code, also was ist das Problem? und wie kann ich es reparieren?

Danke ^^

struct node { 
    int StudentNumber; 
    string name; 
    node *link,*data; 

    }; 

node *head,*newNode,*last; 
string name; 
int StudentNumber; 

node* insert(){ 
      char a='n'; 
      cout<<"hello to linked lists insertion"<<endl; 

      cout<<endl<<"please write your name : "; 
      cin>>name; 
      cout<<"please put the student number : "; 
      cin>>StudentNumber; 
      head=NULL; 

      while(a!='n'||a!='N'){ 

       newNode = new node ; 
       newNode->StudentNumber=StudentNumber; 
       newNode->name=name; 
       newNode->link=NULL; 

       if (head==NULL) 
       { 
        head=newNode; 
        last=newNode; 

       }else { 

        last->link=newNode; 
        last=newNode; 

       }//end else 


       cout<<"please write your name : "; 
       cin>>name; 
       cout<<endl<<"please put the student number : "; 
       cin>>StudentNumber; 
       cout<<"Do you want to insert new nodes ? y for yes , n for no "; 
       cin>>a; 


      }//end while 

      return head; 
    }//end insert function 


// adding nodes function 

void add() { 
    int j; 
    cout<<"please choose your option for adding new node : 1 for add at the beginning , 2 for add at the end "; 
    cin>>j; 
    if (head!=NULL) 
     { 
    switch (j) 
{ 
    // adding at the beginning 
case 1 : 
     newNode=new node; 
     newNode->link=head; 
     head=newNode; 
     cout<<"please insert your node data : "; 
     cout<<"Student Name : "<<newNode->data<<endl<<"and student number is : "<<newNode->StudentNumber; 

    break; 
    // at the end 
case 2: 
    newNode= head; 
    while (newNode->link!=NULL) 
    { 
     newNode = newNode->link; 

    }// end of while 
    last= newNode; 
    newNode = new node ; 
    newNode->link=NULL; 
    last->link=newNode; 
    cout<<"please insert your node data : "; 
    cout<<"Student Name : "<<newNode->data<<endl<<"and student number is : "<<newNode->StudentNumber; 
    break; // end of case adding at the end 


} 
}else {cout<<"The list is empty";} 

}// ending of the adding nodes function 


// delete node function 

void deletion() { 
    int s; 
    cout<<"please choose your option for deleting nodes : 1 for delete the first , 2 for delete the last node "; 
      cin>>s; 
switch (s) { 
// delete the first node 
case 1 : 
    newNode = head; 
    last=head->link; 
    head=last; 
    delete newNode; 
    break; 

    //delete the last node 
case 2: 
    newNode=head; 
    last=head; 
    while (newNode->link!=NULL) 
    { 
     last=newNode; 
     newNode=newNode->link; 
    } 
    last->link=NULL; 
    delete newNode; 
    break; 


}//end of the switch 


}// end of delete nodes function 




int main() { 
    int m; 
    cout<<"Welcome to LinkedLists Example"<<endl; 
    cout<<"enter your choice number , 1 for inserting nodes to the list , 2 for adding nodes , 3 for deleting nodes "; 
    cin>>m; 
    switch(m) { 
    case 1: 
     cout<<insert(); 
     break; 
    case 2: 
     cout<<add(); 
     break; 
    case 3: 
     cout<<deletion(); 
     break; 


    } 

return 0; 

}

Antwort

0

In Ihrer main Funktion haben Sie die folgenden drei Zeilen:

cout<<insert(); 
cout<<add(); 
cout<<deletion(); 

Wenn man sich die Prototypen für diese Funktionen aus:

node* insert() 
void add() 
void deletion() 

Jetzt können wir sehen, was das Problem ist. In dem Fall insert versuchen Sie, eine node* in cout zu übergeben. cout hat keine Ahnung, wie man mit node* umgehen soll. In ähnlicher Weise übergeben add und deletion eine void in cout, die cout weiß nicht, wie zu behandeln ist.

Es gibt zwei Lösungen:

  1. Pack ein string innerhalb von insert, add und delete, dann wieder die Zeichenfolge zu cout.
  2. Entfernen Sie cout aus diesen Zeilen.

Ich schlage die zweite Lösung vor. Es ist viel einfacher für Ihr Projekt, und es bricht nicht, was Sie mit dem Rückgabewert insert machen wollen. Ihre Hauptfunktion wird so aussehen:

int main() { 
    int m; 
    cout<<"Welcome to LinkedLists Example"<<endl; 
    cout<<"enter your choice number , 1 for inserting nodes to the list , 2 for adding nodes , 3 for deleting nodes "; 
    cin>>m; 
    switch(m) { 
     case 1: 
     insert(); 
     break; 
     case 2: 
     add(); 
     break; 
     case 3: 
     deletion(); 
     break; 
    } 
    return 0; 
} 
+0

Danke, das ist hilfreich ^^ – MuSaB07

Verwandte Themen