public bool AddItemAfterItem(T itemToAdd, T itemToFind) { if (itemToAdd == null) { return(false); } if (itemToFind == null) { return(Add(itemToAdd)); } SingleLinkedListItem <T> foundItem = FindItem(itemToFind); if (foundItem == null) { return(Add(itemToAdd)); } if (foundItem == this._lastItem) { this._lastItem.NextItem = new SingleLinkedListItem <T>(itemToAdd, null); this._lastItem = this._lastItem.NextItem; } else { SingleLinkedListItem <T> newItem = new SingleLinkedListItem <T>(itemToAdd, foundItem.NextItem); foundItem.NextItem = newItem; newItem = foundItem.NextItem.NextItem; } return(false); }
public SingleLinkedListItem <T> FindItemBeforeItem(T itemToFind, out bool isStartItem) { isStartItem = false; if (itemToFind == null) { return(null); } if (this._firstItem == null) { return(null); } if (this._firstItem.Item.Equals(itemToFind)) { isStartItem = true; return(null); } else { SingleLinkedListItem <T> tmp = this._firstItem; while (tmp != null) { if (tmp.NextItem != null) { if ((tmp.NextItem != null) && (tmp.NextItem.Item.Equals(itemToFind))) { return(tmp); } tmp = tmp.NextItem; } } return(null); } }
public bool Remove(T itemToRemove) { if (itemToRemove == null) { return(false); } // es existiert noch kein Eintrag in der Liste if (this._firstItem == null) { return(false); } //1.Fall //erster Eintrag ist der gesuchte Eintrag bool isStartItem; SingleLinkedListItem <T> itemBeforeItemToRemove = FindItemBeforeItem(itemToRemove, out isStartItem); //Item ist nicht vorhanden if ((itemBeforeItemToRemove == null) && !isStartItem) { return(false); } //Gesuchter Eintrag ist erster Eintrag if (isStartItem) { this._firstItem = this._firstItem.NextItem; return(false); } //letzter Eintrag if (itemBeforeItemToRemove.NextItem.NextItem == null) { this._lastItem = itemBeforeItemToRemove; this._lastItem.NextItem = null; return(true); }
public SingleLinkedListItem <T> FindItem(T itemToFind) { if (itemToFind == null) { return(null); } else { SingleLinkedListItem <T> tmp = this._firstItem; while (tmp != null) { if (tmp.Item.Equals(itemToFind)) { return(tmp); } tmp = tmp.NextItem; } return(null); } }
public bool Add(T itemToAdd) { if (itemToAdd == null) { return(false); } //1.Fall if (this._firstItem == null) { this._firstItem = new SingleLinkedListItem <T>(itemToAdd, null); this._lastItem = this._firstItem; } //2.Fall else { this._lastItem.NextItem = new SingleLinkedListItem <T>(itemToAdd, null); this._lastItem = this._lastItem.NextItem; } return(true); }
public SingleLinkedList(SingleLinkedList <T> sll) { this._firstItem = sll._firstItem; this._lastItem = sll._lastItem; }
public SingleLinkedList(T item) { this._firstItem = new SingleLinkedListItem <T>(item, null); this._lastItem = _firstItem; }
public SingleLinkedList() { this._firstItem = null; this._lastItem = null; }
static void Main(string[] args) { //Klasse Person testen: Person p = new Person("Elias", "Rist", new DateTime(2001, 8, 24)); // Console.WriteLine(p); Person p2 = new Person("Thomas", "Mairer", new DateTime(2001, 3, 4)); Person p3 = new Person("Tobias", "Flökinger", new DateTime(2000, 7, 4)); Person p4 = new Person("Christian", "Hölbling", new DateTime(2000, 7, 4)); SingleLinkedList<Person> sll = new SingleLinkedList<Person>(); sll.Add(p); sll.Add(p2); sll.Add(p3); sll.Add(p4); sll.ChangeItem(p2, p4); Console.WriteLine(sll); /* if (sll.Remove(null)) { Console.WriteLine("Person wurde entfernt"); } else { Console.WriteLine("Person wurde nicht entfernt - Parameter = null"); } if (sll.Remove(p)) { Console.WriteLine("Person wurde entfernt"); } else { Console.WriteLine("Person wurde nicht entfernt - Parameter = null"); } sll.Add(p); sll.Add(p2); sll.Add(p3); sll.Add(p4); //1.Fall if (sll.Remove(p3)) { Console.WriteLine("Person wurde entfernt - Starteintrag wurde entfernt"); } else { Console.WriteLine("Person wurde nicht entfernt - Starteintrag"); } Console.WriteLine(sll); Console.WriteLine("-----"); bool istStarteintrag; SingleLinkedListItem<Person> personBefore = new SingleLinkedListItem<Person>(); personBefore = sll.FindItemBeforeItem(p2, out istStarteintrag); if (istStarteintrag) { Console.WriteLine("Es existiert kein Eintrag vor dem gesuchten Eintrag."); Console.WriteLine("Die gesuchte Person ist im Starteintrag enthalten!"); } else if(personBefore != null) { Console.WriteLine("Item vor gesuchter Person existiert."); Console.WriteLine("Person vor der gesuchten Person lautet: "); Console.WriteLine(personBefore); } else { Console.WriteLine("gesuchte Person ist in dieser Liste nicht enthalten!"); } */ /* if(p == p2) { Console.WriteLine("p und p2 sing gleich: =="); } else { Console.WriteLine("p und p2 sind nicht gleich: =="); } if (p.Equals(p2)) { Console.WriteLine("p und p2 sing gleich: Equals()"); } else { Console.WriteLine("p und p2 sind nicht gleich: Equals()"); } if (p == p3) { Console.WriteLine("p und p3 sing gleich: =="); } else { Console.WriteLine("p und p3 sind nicht gleich: =="); } if (p.Equals(p3)) { Console.WriteLine("p und p3 sing gleich: Equals()"); } else { Console.WriteLine("p und p3 sind nicht gleich: Equals()"); } */ Console.ReadKey(); //SingleLinkedListItem testen: //generische Klasse verwenden: SingleLinkedListItem<Person> item = new SingleLinkedListItem<Person>(p, null); Console.WriteLine(item); //Klasse SSL testen //Methode Add() testen SingleLinkedList<Person> singleLL = new SingleLinkedList<Person>(); if (singleLL.Add(p)) { Console.WriteLine("Person wurde hinzugefügt!"); } else { Console.WriteLine("Person konnte nicht hinzugefügt werden!"); } if (singleLL.Add(new Person("Tobias", "Flöckinger", new DateTime(2000, 8, 13)))) { Console.WriteLine("Person wurde hinzugefügt!"); } else { Console.WriteLine("Person konnte nicht hinzugefügt werden!"); } Console.WriteLine("Komplette SLL ausgeben:"); Console.WriteLine(singleLL); Console.ReadKey(); }