Write a function named doubleList
that accepts as a parameter a reference to a pointer to a ListNode
representing the front of a linked list.
Your function should double the size of a list by appending a copy of the original sequence to the end of the list.
For example, if a variable named front
points to the front of a list containing the following values:
{1, 35, 28, 7}
Then the call of doubleList(front);
should modify the list to store the following values:
{1, 35, 28, 7, 1, 35, 28, 7}
Constraints:
Do not use any auxiliary data structures to solve this problem (no array, vector, stack, queue, string, etc).
If the original list contains N nodes, then you should construct exactly N new nodes to be added.
Do not modify the data
field of existing nodes; change the list by changing pointers only.
Assume that you are using the ListNode
structure as defined below:
struct ListNode {
int data; // value stored in each node
ListNode* next; // pointer to next node in list (nullptr if none)
}