c++ - Singly linked list, why is the list empty (head == NULL)? -
i created singly linked list:
#include <iostream> using namespace std; struct node{ int data; node *next; }; bool isempty(node *head){ if (head == null){ return true; } else{ return false; } } void append(node *head, node *last, int data){ node *newnode = new node; newnode->data = data; newnode->next = null; if (isempty(head)){ head = newnode; last= newnode; } else{ last->next = newnode; last= newnode; } } void printlist(node *current){ if (isempty(current)){ cout << "list empty." << endl; } else{ int = 1; while (current != null){ cout << << ". node: " << endl; cout << current->data << endl; current = current->next; i++; } } } void main(){ node *head = null; node *last = null; append(head, last, 53); append(head, last, 5512); append(head, last, 13); append(head, last, 522); append(head, last, 55); printlist(head); } when compile it, output this:
list empty.
but don't know why. "head" gets address, "head" shouldn't null. apparently null. don't know how solve problem.
you have remember arguments functions default passed value, means arguments value copied , function works on copy , not original.
now take append function, when pass head argument pointer copied argument, , changes made head inside function made copy.
to make work need pass arguments change by reference, like
void append(node *&head, node *&last, int data) now head , last references original pointer variables, , changes variable made original variables.
Comments
Post a Comment