I'm trying to build a linked list and for some reason I get an unused variable error when I create a newNode. What puzzles me is that when I create the head I don't get such an error. Can somebody explain what I'm doing wrong here.
And another thing, for some reason after the first iteration of the loop, it starts to print Input: twice.
int main()
{
char input[1];
struct node *head = NULL;
struct node *newNode = NULL;
do {
printf("\nInput: ");
scanf(" %c", input);
if(strcmp(input, "=") != 0) {
if(head == NULL) {
//no error
head = addLast(head, inputToNode(input));
}
else {
//error
newNode = addLast(head, inputToNode(input));
}
}
} while(strcmp(input, "=") != 0);
return 0;
}
The error I get is "error: variable 'newNode' set but not used [-Werror=unused-but-set-variable]"
CodePudding user response:
You are just assigning some data to NewNode, can you see somewhere in your code where NewNode is used ? I don't.
You should always work on the same variable, either head or NewNode.
For example, if your head == NULL your code behaves well, perfect.
Now, if head already exists, you just want to append your new node to head:
head = addLast(head, inputToNode(input))
If you do:
NewNode = addLast(head, inputToNode(input))
NewNode will always be of length 2, because you will never modify head, which will always only contains the first input, and NewNode will contain as second element the inputToNode(input)
CodePudding user response:
... when I create the
headI don't get such an error.
head is potentially read after the assignment read (if(head == NULL)) where as newNode is read after it is assigned.
