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 Node
s, 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"}