c++ - do we need to allocate memory for linked list node? -


by saw 2 ways initiate node?

  1. node c={6, null}; node b={3, &c}; node a={1, &b}; node *root = &a; 
  2. node * new_node = (node*)malloc(sizeof(node)); new_node->data = 10; new_node->next = &m; 

which better? , right?

another question how can free memory?

for 1, not need free mem right?

for 2, next pointer, free(root->next), root->data=null, right way delete node?

both correct. first 1 relies on instantiating objects on stack , assigning them node * , later 1 instantiating objects on heap (using malloc).

free can used freeing memory allocated malloc.

you right in first case - don't need free mem.

in second case - linked list - create wrapper on free in pass node **, traverse through linked list until null node, save next node , free current one. , optionally can set argument null.