public SingleLinkedListItem <T> Find(T itemToFind) { if (itemToFind == null) { return(null); } if (this._firstItem == null) { return(null); } SingleLinkedListItem <T> actItem = this._firstItem; while (actItem != null) { if (actItem.Item.Equals(itemToFind)) { return(actItem); } actItem = actItem.NextItem; } return(null); }
public bool AddItemAfterItem(T itemToAdd, T itemBefore) { if (itemToAdd == null || itemBefore == null) { return(false); } if (this._firstItem == null) { return(Add(itemToAdd)); } SingleLinkedListItem <T> actItem = this._firstItem; while (actItem != null) { if (actItem.Item == itemBefore) { actItem.NextItem = new SingleLinkedListItem <T>(itemToAdd, actItem.NextItem); } actItem = actItem.NextItem; } return(true); }
public SingleLinkedListItem <T> FindItemBeforeItemToFind(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); } SingleLinkedListItem <T> actItem = this._firstItem; while (actItem != null) { if ((actItem.NextItem != null) && (actItem.NextItem.Item.Equals(itemToFind))) { return(actItem); } actItem = actItem.NextItem; } return(null); }
public bool Change(T itemToChange, T itemNewData) { if ((itemToChange == null) || (itemNewData == null)) { return(false); } if (this._firstItem == null) { return(false); } SingleLinkedListItem <T> foundItem = Find(itemToChange); if (foundItem == null) { return(false); } else { foundItem.Item = itemNewData; return(true); } }
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); } SingleLinkedListItem <T> pointer = this._firstItem; while (pointer != null) { if ((pointer.NextItem != null) && (pointer.NextItem.Item.Equals(itemToFind))) { return(pointer); } pointer = pointer.NextItem; } return(null); }
public bool ChangeItem(T itemToChange, T itemNewData) { if (itemToChange == null) { return(false); } if (itemNewData == null) { return(false); } if (this._firstItem == null) { return(false); } SingleLinkedListItem <T> foundItem = Find(itemToChange); // Item ist nicht vorhanden if (foundItem == null) { return(false); } else { foundItem.Item = itemNewData; return(true); } }
public bool Remove(T itemToRemove) { if (itemToRemove == null) { return(false); } // es existiert noch kein Eintrag in der Liste if (this._firstItem == null) { return(false); } bool isFirstItem; SingleLinkedListItem <T> itemBeforeItemToRemove = this.FindItemBeforeItemToFind(itemToRemove, out isFirstItem); // Item ist nicht vorhanden if ((itemBeforeItemToRemove == null) && !isFirstItem) { return(false); } // 1ter Fall: 1ter Eintrag // 1ter Eintrag ist der gesuchte Eintrag if (isFirstItem) { this._firstItem = this._firstItem.NextItem; return(true); } // 2ter Fall: irgendwo zw. _firstItem und _lastItem if (itemBeforeItemToRemove.NextItem.NextItem == null) { this._lastItem = itemBeforeItemToRemove; this._lastItem.NextItem = null; return(true); } // 3ter Fall: es handelt sich um den letzten Eintrag else { itemBeforeItemToRemove.NextItem = itemBeforeItemToRemove.NextItem.NextItem; return(true); } }
public void AddAfter(T itemToAdd, T itemToFind) { SingleLinkedListItem <T> actItem = this._firstItem; do { if (actItem.Item.Equals(itemToFind)) { actItem.NextItem = new SingleLinkedListItem <T>(itemToAdd, null); actItem = actItem.NextItem; } else { Add(itemToAdd); } } while (actItem == this._lastItem); }
public bool ChangeItem(T itemToFind, T newData) { if (newData == null) { return(false); } SingleLinkedListItem <T> foundItem = Find(itemToFind); if (foundItem == null) { return(false); } foundItem.Item = newData; return(true); }
public bool Remove(T itemToRemove) { if (itemToRemove == null) { return(false); } // es existiert noch kein Eintrag in der Liste if (this._firstItem == null) { return(false); } bool isFirstItem; SingleLinkedListItem <T> itemBeforeItemToRemove = this.FindItemBeforeItemToFind(itemToRemove, out isFirstItem); // 1. Fall: 1. Eintag // 1. Eintrag ist der gesuchte Eintrag if ((itemBeforeItemToRemove == null) && !isFirstItem) { return(false); } if (isFirstItem) { this._firstItem = this._firstItem.NextItem; return(true); } // 2. Fall: es handelt sich um den letzten Eintrag SingleLinkedListItem <T> actItem = this._firstItem; if (itemBeforeItemToRemove.NextItem.NextItem == null) { this._lastItem = itemBeforeItemToRemove; this._lastItem.NextItem = null; return(true); } // 3. Fall: irgentwo zwischen _firstItem und _lastItem else { itemBeforeItemToRemove.NextItem = itemBeforeItemToRemove.NextItem.NextItem; return(true); } }
public override string ToString() { string s = ""; if (this._firstItem != null) { SingleLinkedListItem <T> actItem = this._firstItem; while (actItem != null) { s += actItem.Item.ToString() + "\n"; actItem = actItem.NextItem; } } if (s == "") { return("no item"); } return(s); }
public SingleLinkedListItem <T> Find(T itemToFind) { SingleLinkedListItem <T> pointer = this._firstItem; if ((_firstItem == null) || (itemToFind == null)) { return(null); } while (pointer != null) { if (pointer.Item.Equals(itemToFind)) { return(pointer); } pointer = pointer.NextItem; } return(null); }
public bool Change(T itemToReplace, T itemNewData) { //Parameter überprüfen if ((itemToReplace == null) || (itemNewData == null) || (this._firstItem == null)) { return(false); } SingleLinkedListItem <T> itemToChange = Find(itemToReplace); if (itemToChange == null) { return(false); } else { itemToChange.Item = itemNewData; return(true); } }
// Methode Add public bool Add(T itemToAdd) { // 1. Parameter überprüfen if (itemToAdd == null) { return(false); } // 1. Fall: die SLL ist leer if (this._firstItem == null) { this._firstItem = new SingleLinkedListItem <T>(itemToAdd, null); this._lastItem = this._firstItem; } // 2. Fall: die SLL ist nicht leer else { this._lastItem.NextItem = new SingleLinkedListItem <T>(itemToAdd, null); this._lastItem = this._lastItem.NextItem; } return(true); }
public bool Add(T itemToAdd) { //Parameter überprüfen if (itemToAdd == null) { return(false); } //1. Fall: SLL ist leer if (this._firstItem == null) { _firstItem = new SingleLinkedListItem <T>(itemToAdd, null); _lastItem = _firstItem; } //2. Fall: SLL beinhaltet Elemente else { this._lastItem.NextItem = new SingleLinkedListItem <T>(itemToAdd, null); this._lastItem = this._lastItem.NextItem; } return(true); }
public bool AddAfter(T itemToAdd, T itemToFind) { if (itemToAdd == null) { return(false); } SingleLinkedListItem <T> actItem = this._firstItem; do { if (actItem.Item.Equals(itemToFind)) { actItem.NextItem = new SingleLinkedListItem <T>(itemToAdd, actItem.NextItem); actItem = actItem.NextItem; } else { Add(itemToAdd); } } while (actItem == this._lastItem); return(true); }
public bool AddAfterItem(T itemToFind, T itemToAdd) { SingleLinkedListItem <T> foundItem = new SingleLinkedListItem <T>(); //Parameter überprüfen if (itemToAdd == null) { return(false); } if (this._firstItem != null) { SingleLinkedListItem <T> actItem = this._firstItem; while (actItem != null) { if (actItem.Equals(itemToFind)) { foundItem = actItem; actItem = null; } } } if (foundItem != null) { foundItem.NextItem = new SingleLinkedListItem <T>(itemToAdd, foundItem.NextItem); } 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; }
public SingleLinkedListItem(T p, SingleLinkedListItem <T> nextItem) { this.Item = p; this.NextItem = nextItem; }
public SingleLinkedList(SingleLinkedList <T> list) { this._firstItem = list._firstItem; this._lastItem = list._lastItem; }
public SingleLinkedListItem(T item, SingleLinkedListItem <T> nextItem) { this.Item = item; this.NextItem = nextItem; }
public bool Remove(T itemToRemove) { if (itemToRemove == null) { return(false); } //es existiert noch kein Eintrag in der Liste if (this._firstItem == null) { return(false); } bool isFirstItem; SingleLinkedListItem <T> itemBeforeItemToRemove = this.FindItemBeforeItem(itemToRemove, out isFirstItem); //Item ist nicht vorhanden if ((itemBeforeItemToRemove == null) && (!isFirstItem)) { return(false); } //1ter Fall //1ter Eintrag ist der gesuchte Eintrag if (isFirstItem) { this._firstItem = this._firstItem.NextItem; return(true); } //2ter Fall : irgendwo zw firstItem und LastItem if (itemBeforeItemToRemove.NextItem.NextItem == null) { this._lastItem = itemBeforeItemToRemove; this._lastItem.NextItem = null; return(true); } //3ter Fall: es handelt sich um de letzten Eintrag if (itemBeforeItemToRemove.NextItem == itemToRemove) { itemBeforeItemToRemove.NextItem = itemBeforeItemToRemove.NextItem.NextItem; return(true); } return(false); //1ter Fall : 1ter Eintrag //1ter Eintrag ist der gesuchte Eintrag /*if (itemToRemove.Equals(this._firstItem.Item)) * { * this._firstItem = this._firstItem.NextItem; * return true; * } * * //2ter Fall : irgendwo zw _firstItem und _lastItem * * SingleLinkedListItem<T> actItem = this._firstItem; * while(actItem != null) * { * if (actItem.NextItem != null) * { * if (actItem.NextItem.Item.Equals(itemToRemove)) * { * actItem.NextItem = actItem.NextItem.NextItem; * return true; * } * } * actItem = actItem.NextItem; * } * * * //3ter Fall: es handelt sich um den letzten Eintrag * actItem = this._firstItem; * * * * while (actItem.NextItem != this._lastItem) * { * actItem = actItem.NextItem; * } * if (actItem.NextItem.Item.Equals(itemToRemove)) * { * this._lastItem = actItem; * this._lastItem.NextItem = null; * return true; * } * return false; */ }