package LinkedList.Single;

public class ElementList {
	Node head;
	
	// ADD Methoden
	public void addAtIndex(int value, int index) {
		// Erstelle eine neue Knote
		Node newNode = new Node();
		// setze drin einen Wert
		newNode.value = value;
		// falls meine Liste leer ist!
		if (head == null) {
			head = newNode;
			return;
		}
		
		if (index == 0) {
			newNode.next = head;
			head = newNode;
			return;
		}
		
		Node temp = head;
		for (int i = 0; i < index - 1 && temp.next != null ; i++) 
			temp = temp.next;
		
		newNode.next = temp.next;
		temp.next = newNode;
	}
	public void addLast(int value) {
		// Erstelle eine neue Knote
		Node newNode = new Node();
		// setze drin einen Wert
		newNode.value = value;
		// falls meine Liste leer ist!
		if (head == null) {
			head = newNode;
			return;
		}
		// falls nicht!
		Node temp = head;
		while (temp.next != null)
			temp = temp.next;

		temp.next = newNode;	
	}
	public void addFirst(int value) {
		// Erstelle eine neue Knote
		Node newNode = new Node();
		// setze drin einen Wert
		newNode.value = value;
		
		if (head == null)
			head = newNode;
		
		/*
		 * newNode.next = null, aber ist jetzt nicht mehr null,
		 * weil es jetzt gleich head;
		 */
		newNode.next = head;
		head = newNode;
			
	}
	//---------------------------------------------------
	
	
	public void printList() {
		if (head == null)
			return;
		
		Node temp =head;
		System.out.print("[");
		while(temp != null) {
			System.out.print(temp.value + " ");
			temp = temp.next;
		}
		System.out.print("]");
			
	}

}
