All pastes #768272 Raw Edit

Vermischtes

public java v1 · immutable
·published 2007-11-10 13:50 UTC
rendered paste body
package a2;public class DLinkedListImpl<E> implements DLinkedList<E> {	private static class Node<E> {		E value;		Node prev;		Node next;				Node(E eValue, Node nPrev, Node nNext) {			value = eValue;			prev = nPrev;			next = nNext;		}				Node() {}				@Override		public boolean equals(Object o) {			if (o instanceof Node) {				return value.equals(((Node)o).value);			}			return false;		}				@Override		public String toString() {			if (value != null) return value.toString();			return super.toString();		}	}		Node<E> head;	Node<E> tail;	int size = 0;		public DLinkedListImpl() {		tail = new Node<E>();		head = tail;	}		private boolean addNew(E e) {		Node<E> temp = tail;		tail = new Node<E>(e, temp, null);		temp.next = tail;		size++;		return true;	}	public boolean add(E e) {		if (!contains(e))			return addNew(e);		else {			return addR(head, e);		}	}		private boolean addR(Node<E> n, E e) {		if (e.equals(n.value) && (n.prev != null)) {			Node<E> temp = n.prev;			n.prev = new Node<E>(n.value, n.prev, n.next);			n = new Node<E>(temp.value, temp.prev, temp.next);			//swapNodes(n.prev, n);			return true;		}		if (n.next == null) return false;		return (containsR(n.next, e));	}		private void swapNodes(Node<E> n1, Node<E> n2) {		//NOCH 100% FALSCH		Node<E> temp = n1;		n1 = new Node<E>(n2.value, n2.prev, n2.next);		n2 = new Node<E>(temp.value, temp.prev, temp.next);	}		public boolean contains(E e) {		return containsR(head, e);	}		private boolean containsR(Node<E> n, E e) {		if (e.equals(n.value)) return true;		if (n.next == null) return false;		return (containsR(n.next, e));	}		public boolean remove(E e) {		size--;		return removeR(head, e);	}	private boolean removeR(Node<E> n, E e) {		if (e.equals(n.value)) {			n.prev.next = n.next;			n.next.prev = n.prev;			return true;		}		if (n.next == null) return false;		return (removeR(n.next, e));	}		public int size() {		return size;	}		public static void main(String[] args) {		DLinkedListImpl<String> a = new DLinkedListImpl<String>();		System.out.println(a.tail.value);		System.out.println("head == tail? " + (a.head == a.tail));		a.add("A");		System.out.println("head == tail? " + (a.head == a.tail));		a.add("B");		a.add("C");		a.add("C");		a.add("C");		a.add("C");		System.out.println(a.tail.value);		System.out.println(a.tail.prev.value);		System.out.println(a.tail.prev.prev.value);		System.out.println(a.tail.prev.prev.prev.value);		System.out.println("---");		System.out.println(a.head.value);		System.out.println(a.head.next.value);		System.out.println(a.head.next.next.value);		System.out.println(a.head.next.next.next.value);		System.out.println("---");		System.out.println(a.contains("B"));		System.out.println("Removing B...");		a.remove("B");		System.out.println(a.contains("B"));		System.out.println(a.size());		System.out.println("---");		System.out.println(a.head.value);		System.out.println(a.head.next.value);		System.out.println(a.head.next.next.value);	}}