blob: ac16a03accb02804ad3b1dc21aa3833917627d89 [file] [log] [blame]
// $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());
}
}