having a new check that verifies the single reference constraint: only allows a singl...
[IRC.git] / Robust / src / ClassLibrary / LinkedList.java
index 98701fba4a47145d36fbdd734e5b474e7a391b03..2923f400b6d1060949f5d72e3b4638f5dfd304ca 100644 (file)
@@ -3,9 +3,9 @@ public class LinkedListElement {
   public LinkedListElement prev;
   public Object element;
 
-  public LinkedListElement( Object e,
-                           LinkedListElement n,
-                           LinkedListElement p ) {
+  public LinkedListElement(Object e,
+                           LinkedListElement n,
+                           LinkedListElement p) {
     element = e;
     next = n;
     prev = p;
@@ -21,32 +21,32 @@ public class LinkedList {
     clear();
   }
 
-  public add( Object o ) {
+  public add(Object o) {
     if( tail == null ) {
-      head = new LinkedListElement( o, null, null );
+      head = new LinkedListElement(o, null, null);
       tail = head;
 
     } else {
-      tail.next = new LinkedListElement( o, null, tail );
+      tail.next = new LinkedListElement(o, null, tail);
       tail = tail.next;
     }
     size++;
   }
 
-  public addFirst( Object o ) {
+  public addFirst(Object o) {
     if( head == null ) {
-      head = new LinkedListElement( o, null, null );
+      head = new LinkedListElement(o, null, null);
       tail = head;
 
     } else {
-      head.prev = new LinkedListElement( o, head, null );
+      head.prev = new LinkedListElement(o, head, null);
       head = head.prev;
     }
     size++;
   }
 
-  public addLast( Object o ) {
-    add( o );
+  public addLast(Object o) {
+    add(o);
   }
 
   public clear() {
@@ -64,17 +64,27 @@ public class LinkedList {
   }
 
   public Object clone() {
-    System.out.println( "LinkedList.clone() not implemented." );
+    System.out.println("LinkedList.clone() not implemented.");
     System.exit(-1);
   }
 
-  public boolean contains( Object o ) {
+  public boolean contains(Object o) {
     LinkedListElement e = head;
-    while( e != null ) {
-      if( e.element == o ) {
-       return true;
+    if (o==null) {
+      while(e!=null) {
+        if (e.element==null) {
+          return true;
+        }
+        e=e.next;
+      }
+      return false;
+    } else {
+      while( e != null ) {
+        if (o.equals(e.element)) {
+          return true;
+        }
+        e = e.next;
       }
-      e = e.next;
     }
     return false;
   }
@@ -90,7 +100,7 @@ public class LinkedList {
     if( tail == null ) {
       return null;
     }
-    return tail.element;    
+    return tail.element;
   }
 
   public Object element() {
@@ -111,7 +121,7 @@ public class LinkedList {
 
   public Object removeFirst() {
     if( head == null ) {
-      System.out.println( "LinkedList: illegal removeFirst()" );
+      System.out.println("LinkedList: illegal removeFirst()");
       System.exit(-1);
     }
     Object o = head.element;
@@ -127,7 +137,7 @@ public class LinkedList {
 
   public Object removeLast() {
     if( tail == null ) {
-      System.out.println( "LinkedList: illegal removeLast()" );
+      System.out.println("LinkedList: illegal removeLast()");
       System.exit(-1);
     }
     Object o = tail.element;
@@ -141,27 +151,29 @@ public class LinkedList {
     return o;
   }
 
-  public void remove( Object o ) {
+  public boolean remove(Object o) {
     if( head == null ) {
-      System.out.println( "LinkedList: illegal remove( Object o )" );
-      System.exit(-1);
+//      System.out.println("LinkedList: illegal remove( Object o )");
+//      System.exit(-1);
+      return false;
     }
     LinkedListElement e = head;
-    while( e != null ) {
-      if( e.element == o ) {
-       if( e.prev != null ) {
-         e.prev.next = e.next;
-       }
-       if( e.next != null ) {
-         e.next.prev = e.prev;
-       }
-       size--;
-       return;
+    while (e != null) {
+      if (e.element == o) {
+        if (e.prev != null) {
+          e.prev.next = e.next;
+        }
+        if (e.next != null) {
+          e.next.prev = e.prev;
+        }
+        size--;
+        return true;
       }
       e = e.next;
     }
-    System.out.println( "LinkedList: illegal remove( Object o ), "+o+" not found" );
-    System.exit(-1);    
+//    System.out.println("LinkedList: illegal remove( Object o ), "+o+" not found");
+//    System.exit(-1);
+    return false;
   }
 
   public Object pop() {
@@ -170,12 +182,12 @@ public class LinkedList {
     return o;
   }
 
-  public void push( Object o ) {
-    addFirst( o );
+  public void push(Object o) {
+    addFirst(o);
   }
 
   public Iterator iterator() {
-    return new LinkedListIterator( this );
+    return new LinkedListIterator(this);
   }
 }
 
@@ -183,8 +195,8 @@ public class LinkedListIterator extends Iterator {
   LinkedList ll;
   LinkedListElement itr;
   Object removeable;
-  
-  public LinkedListIterator( LinkedList ll ) {
+
+  public LinkedListIterator(LinkedList ll) {
     this.ll = ll;
     itr = ll.head;
     removeable = null;
@@ -196,7 +208,7 @@ public class LinkedListIterator extends Iterator {
 
   public Object next() {
     if( itr == null ) {
-      System.out.println( "LinkedListIterator: illegal next()" );
+      System.out.println("LinkedListIterator: illegal next()");
       System.exit(-1);
     }
     removeable = itr.element;
@@ -206,10 +218,10 @@ public class LinkedListIterator extends Iterator {
 
   public void remove() {
     if( removeable == null ) {
-      System.out.println( "LinkedListIterator: illegal remove()" );
+      System.out.println("LinkedListIterator: illegal remove()");
       System.exit(-1);
     }
-    ll.remove( removeable );
+    ll.remove(removeable);
     removeable = null;
   }
 }