/// <summary> /// Gibt die Datenstruktur in der Konsole aus. /// </summary> public virtual void Print() { for (LinkedListElement elem = start; elem != null; elem = elem.next) { Console.Write($"{elem} "); } }
/// <summary> /// Fügt ein Element am Anfgand ein /// </summary> /// <param name="elem">Das einzufügende Element.</param> protected virtual void Prepend(int elem) { LinkedListElement neu = new LinkedListElement(elem); neu.next = start; start = neu; }
/// <summary> /// Sucht nach einem Element in der LinkedList (Wird kein Element gefunden, wird lastSearchResult auf null gesetzt). /// </summary> /// <param name="elem">Das zu suchende Element.</param> /// <returns>True, wenn ein Element elem gefunden wurde. Sonst False.</returns> public virtual bool Search(int elem) { if (start == null) { return(false); } for (LinkedListElement i = start; i != null; previous = i, i = i.next) { if (i.key == elem) { return(true); } } return(false); }
/// <summary> /// Entfernt ein Element aus der unsortierten LinkedList. /// </summary> /// <param name="elem">Das zu entfernende Element.</param> /// <returns>True, wenn ein Element entfernt wurde. Sonst False.</returns> public virtual bool Delete(int elem) { if (Search(elem)) { if (start.key == elem) { start = start.next; } else { previous.next = previous.next.next; if (previous.next == null) { end = previous; } } return(true); } return(false); }
/// <summary> /// Sucht nach einem Element in der LinkedList (Wird kein Element gefunden, wird lastSearchResult auf null gesetzt). /// </summary> /// <param name="elem">Das zu suchende Element.</param> /// <returns>True, wenn ein Element elem gefunden wurde. Sonst False.</returns> public override bool Search(int elem) { if (start == null) { return(false); } else { if (elem <= end.key) { for (LinkedListElement i = start; i.key <= elem; previous = i, i = i.next) { if (i.key == elem) { return(true); } } } return(false); } }
/// <summary> /// Check, ob schon Element vorhanden ist und fügt ihn hinzu, falls er nicht vorhanden ist. /// </summary> /// <param name="elem">das einzufügende Element</param> /// <returns>Gibt True zurück, wenn Einfügen erfolgreich. Sonst False</returns> public override bool Insert(int elem) { LinkedListElement neu = new LinkedListElement(elem); if (Search(elem) == false) { if (start == null) { AddFirst(elem); return(true); } else { if (elem < start.key) { Prepend(elem); return(true); } else { for (LinkedListElement i = start; i.next != null; i = i.next) { if (i.key < elem && i.next.key > elem) { neu.next = i.next; i.next = neu; return(true); } } if (end.key < elem) { AddLast(elem); return(true); } } } } return(false); }
/// <summary> /// Fügt am Ende der Liste ein Element ein /// </summary> /// <param name="elem">Das einzufügende Element</param> protected virtual void AddLast(int elem) { end.next = new LinkedListElement(elem); end = end.next; }
/// <summary> /// Fügt das erste Element ein /// </summary> /// <param name="elem">Das einzufügende Element</param> protected void AddFirst(int elem) { start = new LinkedListElement(elem); end = start; }
/// <summary> /// Konstruktor /// </summary> public LinkedListBase() { start = null; end = null; }