//Title: Singly-Linked List Implementation //Version: SLinkedList.java,v 1.3 2002/11/26 10:47:53 pbj Exp //Copyright: Copyright (c) 2002 //Author: Paul Jackson //Organisation: School of Informatics, University of Edinburgh public class SLinkedList { protected SLink firstLink = null; public SLinkedList() {} public boolean isEmpty() { return firstLink == null;} public void addFirst(Object o) { firstLink = new SLink(o, firstLink); } public Object getFirst() { if (isEmpty()) return null; else return firstLink.element; } public Object removeFirst() { if (isEmpty()) return null; Object result = firstLink.element; firstLink = firstLink.nextLink; return result; } public boolean contains (Object o) { for (SLink i = firstLink; i != null; i = i.nextLink) { if (i.element.equals(o)) return true; } return false; } // A recursive version of contains(). private boolean recContainsAux (Object o, SLink s) { if (s == null) return false; else if (s.element.equals(o)) return true; else return recContainsAux(o, s.nextLink); } public boolean recContains(Object o) { return recContainsAux(o, firstLink); } public Iterator iterator() { return new Iterator(firstLink); } }