<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package edu.cornell.cs.cs2110;

public class ListTest {

   /**
    * @param args
    */
   public static void main(String[] args) {
      ArrayList&lt;Integer&gt; al = new ArrayList&lt;Integer&gt;();
      for (int i = 0; i &lt; 20; i++) {
         al.insert(i + 100);
      }
      al.delete(107);
      al.insert(42);
      System.out.println(al);
      
      LinkedListIterative&lt;Integer&gt; lli = new LinkedListIterative&lt;Integer&gt;();
      for (int i = 0; i &lt; 20; i++) {
         lli.insert(i + 100);
      }
      lli.delete(107);
      lli.insert(42);
      System.out.println(lli);
      
      LinkedListRecursive&lt;Integer&gt; llr = new LinkedListRecursive&lt;Integer&gt;();
      for (int i = 0; i &lt; 20; i++) {
         llr.insert(i + 100);
      }
      llr.delete(107);
      llr.insert(42);
      System.out.println(llr);
      
      lli.head = iterativeReverse(lli.head);
      llr.head = iterativeReverse(llr.head);
      System.out.println(lli);
      System.out.println(llr);
      lli.head = recursiveReverse(lli.head);
      llr.head = recursiveReverse(llr.head);
      System.out.println(lli);
      System.out.println(llr);
   }
   
   public static &lt;T&gt; ListCell&lt;T&gt; iterativeReverse(ListCell&lt;T&gt; c) {
      ListCell&lt;T&gt; rev = null;
      for (; c != null; c = c.next) {
         rev = new ListCell&lt;T&gt;(c.datum, rev);
      }
      return rev;
   }

   public static &lt;T&gt; ListCell&lt;T&gt; recursiveReverse(ListCell&lt;T&gt; c) {
      return recursiveReverse(c, null);
   }
   private static &lt;T&gt; ListCell&lt;T&gt; recursiveReverse(ListCell&lt;T&gt; c, ListCell&lt;T&gt; r) {
      if (c == null) return r;
      return recursiveReverse(c.next, new ListCell&lt;T&gt;(c.datum, r));
   }

}
</pre></body></html>