Write a function named stutter
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 replacing every integer with two consecutive occurrences of that integer.
For example, if a variable named front
points to the front of a list containing {1, 8, 19, 4, 17}
, after a call of stutter(front);
, the list should store {1, 1, 8, 8, 19, 19, 4, 4, 17, 17}
.
Constraints:
Do not use any auxiliary data structures to solve this problem (no array, vector, stack, queue, string, etc).
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)
}