예제 #1
0
 /// <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;
        }
예제 #3
0
 /// <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);
 }
예제 #4
0
 /// <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);
     }
 }
예제 #6
0
        /// <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);
        }
예제 #7
0
 /// <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;
 }
예제 #8
0
 /// <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;
 }
예제 #9
0
 /// <summary>
 /// Konstruktor
 /// </summary>
 public LinkedListBase()
 {
     start = null;
     end   = null;
 }