Just to make sure, we pass by pointers to pointers rather than pass by a regular pointer b/c we'd just pass the pointers by value but we want to modify the actual head and tail pointers in main function, right so we need to go to the address of the head and tail pointers, right?
void add_at_end(string node_data, sll_node *front, sll_node *end);
This is wrong b/c we are copying the address into this function so we need to go directly to that address
which explains why it must be: void add_at_end(string node_data, sll_node **front, sll_node **end);
OR we can references but benefits of using pointeres to pointers versus references for add_at_end function?
Just to make sure, we pass by pointers to pointers rather than pass by a regular pointer b/c we'd just pass the pointers by value but we want to modify the actual head and tail pointers in main function, right so we need to go to the address of the head and tail pointers, right?
Right.
References to pointers would do as well as pointers to pointers. Either one will do.