二进制表达式的操作数无效("ostream"(又名"basic_ostream<char>")和"void")



我的大学数据结构作业是用LinkedLists,

完成了代码,但编译器"剪辑"显示了一个错误描述资源路径位置类型

无效的操作数二进制表达式('ostream'(又名'basic_ostream')和'void') LinkedLists.cpp/LinkedLists/src行156 C/c++问题

,这是代码,这是什么问题呢?我该怎么补救呢?

谢谢^ ^

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;

}

main函数中,有以下三行:

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

如果你看看这些函数的原型:

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

现在我们可以看到问题是什么了。在insert的情况下,您试图将node*传递到coutcout不知道如何处理node*。同样,adddeletionvoid传递给cout,而cout不知道如何处理。

有两个解决方案:

  1. insert, adddelete中打包string,然后将该字符串返回给cout
  2. 从这些行中删除cout

我建议第二个解决方案。这对您的项目来说要简单得多,并且不会破坏您计划对insert的返回值所做的任何事情。你的主函数看起来像这样:

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;
}

相关内容

  • 没有找到相关文章

最新更新