Einfach verkettete Liste

Objekt hinzufügen

Objekt entfernen

Double Linked List

Java Code

import java.util.NoSuchElementException;  
  
public abstract class IntegerList{  
  
    private final IntegerNode head;  
    private final IntegerNode tail;  
  
    public IntegerList(){  
        tail = new IntegerNode(null);  
        head = new IntegerNode(null);  
  
        tail.setNext(head);  
        head.setNext(tail);  
    }  
  
    protected IntegerNode getHead(){  
        return head;  
    }   
  
    protected IntegerNode getTail(){  
        return tail;  
    }  
  
    public boolean isEmpty(){  
        return head.getNext() == tail;  
    }  
  
    public Integer pop(){  
        if (this.isEmpty()){  
            throw new NoSuchElementException("IntegerList empty, pop() not possible");  
        }  
        IntegerNode firstNode = head.getNext();  
        IntegerNode secondNode = firstNode.getNext();  
        head.setNext(secondNode);  
        if (head.getNext() == tail){  
            tail.setNext(head);  
        }  
        return firstNode.getObject();  
    }  
  
    public Integer peek(){  
        if (this.isEmpty()){  
            throw new NoSuchElementException("IntegerList empty, peek() not possible"); 
        }  
        return head.getNext().getObject();  
    }  
  
    @Override  
    public String toString(){  
        StringBuilder sb = new StringBuilder("[");  
        IntegerNode pointer = head.getNext();  
        while (pointer != tail){  
            sb.append(pointer.getObject());  
            pointer = pointer.getNext();  
            if (pointer != tail){  
                sb.append("; ");  
            }  
        }  
        sb.append("]");  
        return sb.toString();  
    }  
}  
  
class IntegerNode{
    private final Integer object;  
    private IntegerNode next;  
  
    public IntegerNode(Integer object){  
        this.object = object;  
        this.next = null;  
    }  
  
    public Integer getObject(){  
        return object;  
    }  
  
    public IntegerNode getNext(){  
        return next;  
    }  
  
    public void setNext(IntegerNode next){  
        this.next = next;  
    }  
}