Homework 08: More Lists

Submit this homework using Gradescope. You can type up your answers, or write legibly and scan them. Do not attempt to submit a paper copy in class, as it will not be accepted.


A. (3 points) Consider the methods get(index), add(element), and remove(index) from the java.util.List API. For each of these methods, is there ever a situation where the method will run faster for an ArrayList than for a LinkedList? Briefly explain.

Assume the LinkedList is implemented a head pointer and no other instance variables (no size!); that is, it is a singly linked list, and that the ArrayList’s backing array is large enough to hold the new element (no enlarge() needed). Also assume each of the following operations takes the same amount of time: array lookups, setting elements of arrays, creating new Nodes, traversing a single link in a linked list, and assigning a reference (ex, calling setNext on a node).

B. (2 points) Write a public static List<String> interpose (String sep, List<String> l) method that returns a new list, consisting of the elements of l separated by sep. Assume both arguments are non-null.

Example 1:

Inputs:
     sep: "a"
     l: {"b","d","f"}

Returns: {"b","a","d","a","f"}

Example 2:

Inputs:
     sep: "x"
     l: {"r"}

Returns: {"r"}