Simple Linked List Operations. For a linked list containing strings: 1. Write a function that reads strings typed by the user (until the word "end" is typed) and builds those strings into a linked list. It does not matter what order those strings appear in within the list. 2. Write a function that prints all the strings in a linked list. 3. Build those functions into a program that allows them to be tested. Example run: $ a.out Type strings, or "end" to end: ? one ? two ? three ? four ? five ? six ? end You typed six five four three two one $ 4. Write a function that takes one linked list of strings and splits it as exactly as possible into two linked lists half the length of the original. This should be done efficiently, it only needs one pass through the original list. Remember that a function can only return one result, so you will probably need to design the function with three parameters: one for the original list, and two reference parameters for the results. Make your program test it thoroughly. 5. Write a function that takes two linked list parameters and combines them into a single one. You should assume that the two linked lists are somehow already in alphabetical order. There is no need for your program to check. The program does not need to work if the incoming lists are not in order. The single list that the function produces should also have all its strings in alphabetical order. Test it thoroughly, make sure it still works properly if one or both of the incoming lists are very short or even empty. Look at the example below, to make sure the combined list is properly in order, you can't just stick one list on the end of the other. Example run: $ a.out Shall we test (1) splitting or (2) combining? 2 Type the first list ? zebra ? yeti ? monkey ? emu ? bat ? end You typed bat emu monkey yeti zebra Type the first list ? pig ? llama ? frog ? ant ? end You typed ant frog llama pig The merged list is ant bat emu frog llama monkey pig yeti zebra $