// $Id: lists.java,v 1.1 2004-05-23 07:12:55 bfulgham Exp $ // http://www.bagley.org/~doug/shootout/ import java.io.*; import java.util.*; import java.text.*; public class lists { static int SIZE = 10000; public static void main(String args[]) { int n = Integer.parseInt(args[0]); int result = 0; for (int i = 0; i < n; i++) { result = test_lists(); } System.out.println(result); } public static int test_lists() { int result = 0; // create a list of integers (Li1) from 1 to SIZE LinkedList Li1 = new LinkedList(); for (int i = 1; i < SIZE+1; i++) { Li1.addLast(new Integer(i)); } // copy the list to Li2 (not by individual items) LinkedList Li2 = new LinkedList(Li1); LinkedList Li3 = new LinkedList(); // remove each individual item from left side of Li2 and // append to right side of Li3 (preserving order) while (! Li2.isEmpty()) { Li3.addLast(Li2.removeFirst()); } // Li2 must now be empty // remove each individual item from right side of Li3 and // append to right side of Li2 (reversing list) while (! Li3.isEmpty()) { Li2.addLast(Li3.removeLast()); } // Li3 must now be empty // reverse Li1 LinkedList tmp = new LinkedList(); while (! Li1.isEmpty()) { tmp.addFirst(Li1.removeFirst()); } Li1 = tmp; // check that first item is now SIZE if (((Integer)Li1.getFirst()).intValue() != SIZE) { System.err.println("first item of Li1 != SIZE"); return(0); } // compare Li1 and Li2 for equality if (! Li1.equals(Li2)) { System.err.println("Li1 and Li2 differ"); System.err.println("Li1:" + Li1); System.err.println("Li2:" + Li2); return(0); } // return the length of the list return(Li1.size()); } }