I'm currently studying Jumping into C++.
I understand the concept of Linked Lists, but using linked lists has me stumped.
In the below code (from linked list tutorial), I have "conductor = root; commented out (//) before the second if statement. It outputs "test" and "42".
If I "un-comment" the "conductor = root" line, the output is "test" and "12".
question - why doesn't the code make it to the second while statement and cout "test 123" for both cases?
Code:#include <iostream> #include <cstddef> using std::cout; using std::cin; using std::endl; struct node { int x; node *next; }; int main () { cout<< " test \n "; node *root; // This will be the unchanging first node node *conductor; // This will point to each node as it traverses the list root = new node; // Sets it to actually point to something root->next = 0; // Otherwise it would not work well root->x = 12; conductor = root; // The conductor points to the first node if ( conductor != 0) { while ( conductor->next != 0) conductor = conductor->next; } conductor->next = new node; // Creates a node at the end of the list conductor = conductor->next; // Points to that node conductor->next = 0; // Prevents it from going any further conductor->x = 42; //conductor = root; if (conductor != 0 ) { while ( conductor->next = 0 ) { cout<< "test 123" << endl; cout<< conductor->x; conductor = conductor->next; } cout << conductor->x; } }