From 5ceefcc035a3d8be40bbed0abc56959d6873808b Mon Sep 17 00:00:00 2001
From: hertero <robert.hertel@hs-weingarten.de>
Date: Thu, 1 Sep 2022 16:34:05 +0200
Subject: [PATCH] Anpassung add-/remove-/contains-/add(i,e)-Methoden

---
 .../src/solution/SimpleLinkedList.java        | 61 +++++++++----------
 1 file changed, 30 insertions(+), 31 deletions(-)

diff --git a/SimpleLinkedList/src/solution/SimpleLinkedList.java b/SimpleLinkedList/src/solution/SimpleLinkedList.java
index 6136ae4..ea4bc75 100644
--- a/SimpleLinkedList/src/solution/SimpleLinkedList.java
+++ b/SimpleLinkedList/src/solution/SimpleLinkedList.java
@@ -1,9 +1,5 @@
 package solution;
 
-//2017_OOP_90.jar importieren die von Bayer in der Aufgabenstellung zur Verf�gung gestellt wird.
-
-//import testat.*;
-
 public class SimpleLinkedList<E> extends AbstractSimpleList<E> {
 
 	Node<E> firstNode;
@@ -23,20 +19,21 @@ public class SimpleLinkedList<E> extends AbstractSimpleList<E> {
 	public boolean add(E e) {
 		if (e == null) {
 			return false;
+		} else if (firstNode == null) {
+			firstNode = new Node<E>(e);
 		} else {
-			Node<E> newNode = new Node<>(e);
-
-			if (firstNode == null) {
-				firstNode = newNode;
-			} else {
-				Node<E> currentNode = firstNode;
-				while (currentNode != null) {
-					currentNode = currentNode.getSuccessor();
+			Node<E> currentNode = firstNode;
+			while (currentNode != null) {
+				if (currentNode.getSuccessor() == null) {
+					break;
 				}
-				currentNode.setSuccessor(newNode);
-				currentNode.setPredecessor(currentNode);
+				currentNode = currentNode.getSuccessor();
 			}
+			Node<E> newNode = new Node<E>(e);
+			currentNode.setSuccessor(newNode);
+			newNode.setPredecessor(currentNode);
 		}
+
 		size++;
 		return true;
 	}
@@ -48,14 +45,16 @@ public class SimpleLinkedList<E> extends AbstractSimpleList<E> {
 		}
 		Node<E> currentNode = firstNode;
 		while (currentNode != null) {
-			currentNode = currentNode.getSuccessor();
-		}
-		if (o.equals(currentNode)) {
-			currentNode.setPayload(null);
-			size--;
-			currentNode = currentNode.getPredecessor();
-			return true;
+			if (o.equals(currentNode.getPayload())) {
+				currentNode.setPayload(null);
+				size--;
+				return true;
+			}
 
+			if (currentNode.getSuccessor() == null) {
+				break;
+			}
+			currentNode = currentNode.getSuccessor();
 		}
 		return false;
 	}
@@ -67,11 +66,13 @@ public class SimpleLinkedList<E> extends AbstractSimpleList<E> {
 		}
 		Node<E> currentNode = firstNode;
 		while (currentNode != null) {
+			if (o.equals(currentNode.getPayload())) {
+				return true;
+			}
+
 			currentNode = currentNode.getSuccessor();
 		}
-		if (o.equals(currentNode)) {
-			return true;
-		}
+
 		return false;
 	}
 
@@ -133,16 +134,14 @@ public class SimpleLinkedList<E> extends AbstractSimpleList<E> {
 			}
 			set(0, e);
 
-		} else if (size > 0) {
-			if (i == size) {
-				add(e);
-			}
+		} else if (i == size) {
+			add(e);
 
 		} else if (size > 0 && i < size) {
-			Node<E> newNode = new Node<>(e);
+			Node<E> newNode = new Node<>(e);// node3
 
-			Node<E> tempNode = getIndex(i);
-			Node<E> preTempNode = getIndex(i).getPredecessor();
+			Node<E> tempNode = getIndex(i); // node2
+			Node<E> preTempNode = getIndex(i).getPredecessor(); // node1
 
 			preTempNode.setSuccessor(newNode);
 			newNode.setPredecessor(preTempNode);