C-4.11: Describe in pseudo-code a linear-time algorithm for reversing a singly linked list L, so that the ordering of the nodes becomes exactly opposite of what it was before.
C-4.12: Give an algorithm for concatenating two singly linked lists L and M, with header sentinel nodes, into a single list L' that contains all the nodes of L (in their original order) followed by all the nodes of M (in their original order). What is the running time of this method, if we let n denote the number of nodes in L and we let m denote the number of nodes in M?
C-4.13: Give an algorithm for concatenating two doubly linked lists L and M, with header and trailer sentinel nodes, into a new list L', as in the previous exercise. What is the running time of this method?
C-4.15: Describe in pseudo-code how to swap two nodes x and y in a singly linked list L given references only to x and y. Repeat this exercise for the case when L is a doubly linked list. What are the running times of each of these methods in terms of n, the number of nodes in L?