Skip to content

Instantly share code, notes, and snippets.

@MichaelEstes
Created October 16, 2014 22:38
Show Gist options
  • Save MichaelEstes/9b05635b88bed5ca5180 to your computer and use it in GitHub Desktop.
Save MichaelEstes/9b05635b88bed5ca5180 to your computer and use it in GitHub Desktop.
Duplicating a linked list
node duplicateList(node* list)
{
node *currentNode = list, *newNode = nullptr, *tempNode = nullptr;
while (currentNode)
{
tempNode = new node;
tempNode->tag = currentNode->tag;
tempNode->next = currentNode->next;
tempNode->random = currentNode->random;
currentNode = currentNode->next->next;
}
currentNode = list;
while (currentNode && currentNode->next){
currentNode->next->random = currentNode->random->next;
currentNode = currentNode->next->next;
}
currentNode = list;
tempNode = nullptr;
newNode = currentNode->next;
while (currentNode){
tempNode->next = currentNode->next;
tempNode = currentNode->next;
currentNode->next = currentNode->next->next;
currentNode = currentNode->next;
}
return *newNode;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment