I have implemented linklist as below,
struct node
{
int data;
node* next;
};
void initNode(node* head, int data)
{
head->data = data;
head->next = NULL;
}
void addNode(node* linkList, int data)
{
node* newnode = new node;
newnode->data = data;
newnode->next = NULL;
while (linkList)
{
if (linkList->next == NULL)
{
linkList->next = newnode;
return;
}
linkList = linkList->next;
}
}
void insertFrontNode(node* linkList, int data)
{
node* newnode = new node;
newnode->data = data;
newnode->next = linkList;
linkList = newnode;
}
void DisplayLinkList(struct node* linkList)
{
int i = 1;
while (linkList)
{
cout << "Linklist(" << i << ") " << linkList->data << endl;
linkList = linkList->next;
i++;
}
}
int main()
{
node* linkList =new node;
initNode(linkList, 5);
addNode(linkList, 10);
addNode(linkList, 30);
insertFrontNode(linkList, 12);
DisplayLinkList(linkList);
cin.get();
return 0;
}
My question is, when i initialise linklist in initNode or add node in addNode, the changes are reflected in linkst pointer which i am passing thru argument. but If i am adding node infront in insertFrontNode, changes are not reflecting in the linklist pointer.
Why? and what is difference?