vendredi 6 juillet 2018

Why my head pointer is changing in linked list,even not passing it by reference?

I created a linked list, and made a function reverseList which takes a pointer to head and return pointer to last node.

Node* reverseList(Node *head)
{
Node* curr=head;
Node* prev=NULL;
Node* ahead;
while(curr!=NULL)
{
    ahead=curr->next;
    curr->next=prev;
    prev=curr;
    curr=ahead;
}
return prev;
}

But in main when I am doing this

int main()
{
int n;///no of elements in list
cin>>n;

Node* head=NULL;
head=createList(head,n);///creating list(it is working properly)
printList(head);

cout<<endl;
Node* temp=reverseList(head);///reversing list and storing address of list in 
//new node
printList(temp);///printing reversed list properly

cout<<endl;

printList(head);///while printing this it is printing only one elements, 
//which implies head pointer changes but I don't know
///how
}

My head pointer changes, and it is printing only one value. I had pass my head pointer in reverseList by value. I am providing image of output.

image of output

Aucun commentaire:

Enregistrer un commentaire