Assume the node declaration shown below throughout this worksheet.
struct node
{
someType data;
node* next;
node (someType D, node *N)
: data (D),
next (N)
{ } // all field initialized in initializer list
}; // notice semi-colon
1. Write a function that will split a linked list into two linked lists, so that successive nodes go to different lists, of no specific order (the first, third, and all odd-numbered nodes to the first list, and the second,fourth, and all even-numbered nodes to the second).
void Split (node* &list, node* &odds, node* &evens)
// Pre - list is not empty
// Post - Odds contains the first, third, fifth, etc. elements of list.
// Evens contains the second, fourth, sixth, etc. elements of list.
// List is empty
{
2. Write a function with prototype void reverse(node* &head); that reverses the order of the elements of a linked list pointed to
by the parameter of the function.
3. Write a function that rotates the elements of a list with n elements so that
when the rotation is completed, the last element becomes the first and the first,
the second, the second, the third, etc.... Your function should have list
and n as a parameters.
4. Assuming that you have a linked list with a pointer to the head of the list,
write a function called copy which takes two pointers to lists,
A and B as arguments. copy should make B
a copy of A and return A unchanged.