Doubly linked lists are useful for more than just inserting and removing elements from the head and tail of the list. They can maintain a list of elements that allows for insertion and removal to the interior of the list
Given a node \(v\) of a doubly linked list (which is currently followed by \(w\)), we want to insert a new node \(z\) immediately after \(v\). Concretely, we want to write a function insert(v)
which takes a node, \(v\), and inserts a new node after \(v\). The result should be a list where \(v\)'s next
points to \(z\), \(z\)'s next
points to \(w\), \(w\)'s prev
points to \(z\), and \(z\)'s prev
points to \(v\).
If we execute these events in the wrong order, we can erase crucial information that will break the list. How should the following steps be ordered so that they correctly insert a node in-the middle of a doubly linked list?
prev
point to \(v\).next
point to \(z\).prev
point to \(z\).next
point to \(w\).Consider a circularly linked list. Which of the following methods below removes the node after the cursor? The cursor is a special node which allows us to have a place to start from if we ever need to traverse a circularly linked list.
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
Given a singly linked list, write a program the shifts every node \(k\) unit to the left.
For example
When 4\(\rightarrow\)6\(\rightarrow\)8\(\rightarrow\)9 is shifted \(2\) units left it becomes 8\(\rightarrow\)9\(\rightarrow\)4\(\rightarrow\)6
What will the following linked list look like when each node is shifted \(4432897427834\) to the left.
34\(\rightarrow\)17\(\rightarrow\)17\(\rightarrow\)74\(\rightarrow\)83\(\rightarrow\)59\(\rightarrow\)39