public SentinelList() { _Head = new DListNode <T>(default(T), null, null); _Head.Next = _Head; _Head.Prev = _Head; _Size = 0; }
public void InsertEnd(T item) { DListNode <T> node = new DListNode <T>(item, this._Head, this._Head.Prev); this._Head.Prev.Next = node; this._Head.Prev = node; _Size++; }
public void InsertFront(T item) { DListNode <T> node = new DListNode <T>(item, this._Head.Next, this._Head); this._Head.Next.Prev = node; this._Head.Next = node; _Size++; }
public void InsertAfterThis(T item) { DListNode <T> node = new DListNode <T>(item, this.Next, this); if (this.Next != null) { this.Next.Prev = node; } this.Next = node; }
public void InsertFront(T item) { DListNode <T> node = new DListNode <T>(item, this._Head, null); if (this._Head != null) { this._Head.Prev = node; } this._Head = node; if (this._Tail == null) { this._Tail = this._Head; } _Size++; }
public void InsertEnd(T item) { DListNode <T> node = new DListNode <T>(item, null, this._Tail); if (this._Tail != null) { _Tail.Next = node; } this._Tail = node; if (this._Head == null) { this._Head = this._Tail; } _Size++; }
public void RemoveTail() // 2 or more { if (this._Tail == null) { throw new Exception(); } if (this._Tail.Prev == null) { this._Tail = null; this._Head = null; } else { this._Tail.Prev.Next = null; this._Tail = this._Tail.Prev; } _Size--; }
public DListNode(T item, DListNode <T> next, DListNode <T> prev) { this.Item = item; this.Next = next; this.Prev = prev; }
public DList() { _Head = null; _Tail = null; _Size = 0; }