Reputation: 23
I have homework for Data Structure in college with LinkedLists ,
did the code but the compiler "eclips" shows me an error called Description Resource Path Location Type
invalid operands to binary expression ('ostream' (aka 'basic_ostream') and 'void') LinkedLists.cpp /LinkedLists/src line 156 C/C++ Problem
and this is the code , so what's this issue ? and how can i fix it?
Thanks ^^
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;
}
Upvotes: 2
Views: 7560
Reputation: 5002
In your main
function, you have these three lines:
cout<<insert();
cout<<add();
cout<<deletion();
If you look at the prototypes for these functions:
node* insert ()
void add()
void deletion()
Now we can see what the problem is. In the insert
case, you are trying to pass a node*
into cout
. cout
has no idea how to handle a node*
. Similarly, add
and deletion
are passing a void
into cout
which cout
doesn't know how to handle.
There are two solutions:
string
inside of insert
, add
, and delete
, then return that string to cout
. cout
from those lines.I suggest the second solution. It's much simpler for your project, and it won't break whatever you plan to do with insert
's return value. Your main function will look like this:
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;
}
Upvotes: 3