What is wrong with the following definition of headInsert st
What is wrong with the following definition of headInsert?
struct Node {
int item;
Node* link; };
typedef Node* NodePtr;
void headInsert(NodePtr& head, int data) {
NodePtr tmp = new Node;
tmp->item = data;
head->next = tmp;
tmp->next = head->next;
}
NodePtr head; headInsert(head, 4);
A. tmp should be declared to be a Node not a NodePtr.
B. head->next is pointing to NULL.
C. Nothing is wrong.
D. If there were any nodes following head they are now lost.
Solution
B. head->next is pointing to NULL.
Because of which tmp is not getting stored in the linked list
Correct Code:
struct Node
{
int item;
Node* link;
};
typedef Node* NodePtr;
void headInsert(NodePtr& head, int data)
{
NodePtr tmp = new Node;
tmp->item = data;
// next of tmp should be assigned head
tmp->link = head;
head = tmp;
}
