Linked Lists 2 The Big O As you arrive… 1. Snarf the code for today’s class 2. Grab a worksheet 3. Take a look at the constructor for the LinkedList class you snarfed that takes an int[]. Try to understand how to works. Feel free to run and play with the code to understand it. Take a look at the constructor for the LinkedList class you snarfed that takes an int[]. Which of these statements best describes its operation? 1. It goes through each element of the input array in order, and adds them to the head of the linked list. As a result, the list is the reverse of the array. 2. It goes through each element of the input array in order, and adds them to the tail (end) of the linked list. As a result, the list is the and the array are in the same order. 3. It goes through each element of the input array in reverse and adds them to the head of the linked list. As a result, the list is the and the array are in the same order. 4. It goes through each element of the input array in reverse and adds them to the tail of the linked list. As a result, the list is the reverse of the array. On the agenda: More Practice With Linked Lists 1. 2. 3. 4. Getting Elements in Linked Lists Removing Elements in Linked Lists The DNA Assignment Madness Inner Class (Reprise) Getting elements in a linked list • Write a function getElement(int i) that takes an index and returns the element in a linked list at that index • If the element is not in the list, return -1 • This has a very cute recursive solution, BTW • If you finish that, write a function getMiddleElement() that returns the middle element of a linked list Removing Elements from a Linked List • Write a function removeFours that removes all the elements with value 4 • You can assume that the first element in the linked list will not be a four. • I’ve got 2 hints at the bottom of the source file, if you get stuck • If you finish, change your function so it works if the first element is a 4 (there is a cool recursive formation, but it’s a bit tricky to get) • If you finish that, write a new version of your function that is iterative (i.e. non-recursive) or if you did it iteratively first, do it recursively What do you suppose the Big-O of the following Linked List Operations Are? • Work with those nearby to fill out the worksheet Linked List Big O – Summing Up • Linked Lists are good when you need to add or remove a lot of elements • Linked Lists are not so good when you have to access a lot of specific indexes • Sometimes for optimal behavior you have to keep track of specific nodes rather than iterating across the list multiple times DNA Linked Lists: Into the Mouth of Madness • Write a function mergeLists that takes two linked lists as parameters. It should insert the second list into the first list after the first “0” element in the first list • If there’s no 0 in the first list, both lists should be unmodified • If you finish, write the recursive version (you might need 2 recursive functions for this one) • If you finish, change your function so that rather than modifying the existing list in returns a new list which is the merge