A linked list implementation in Java. Acts as a stack, allows to push and pop elements, as well reversing the list and searching and deleting an element.
package ch.ethz.da.serie05; /** * A simple stack based on a single linked list. * * @author Moritz Hoffmann * * @param <D> * The list data type. */ public class MyList<D> { private static class Element<D> { private D data; private Element<D> next; } Element<D> head; public MyList() { head = null; } public boolean contains(D data) { Element<D> current = head; while (current != null) { if (current.data.equals(data)) { return true; } current = current.next; } return false; } public void delete(D data) { if (head != null) { if (head.data.equals(data)) { // Kopf loeschen head = head.next; } else { // Element nach Kopf loeschen Element<D> current = head; while (current.next != null) { if (current.next.data.equals(data)) { current.next = current.next.next; break; } current = current.next; } } } } public void insert(D data) { Element<D> e = new Element<D>(); e.data = data; e.next = head; head = e; } public D pop() { D data = null; if (head != null) { data = head.data; head = head.next; } return data; } public void reverse() { Element<D> current = head; Element<D> temporary = null; Element<D> last = null; while (current != null) { temporary = current.next; current.next = last; last = current; current = temporary; } head = last; } @Override public String toString() { StringBuilder sb = new StringBuilder("["); Element<D> current = head; while (current != null) { sb.append(current.data); current = current.next; if (current != null) { sb.append(", "); } } return sb.append("]").toString(); } }