Exemple #1
0
 public SentinelList()
 {
     _Head      = new DListNode <T>(default(T), null, null);
     _Head.Next = _Head;
     _Head.Prev = _Head;
     _Size      = 0;
 }
Exemple #2
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++;
        }
Exemple #3
0
        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++;
        }
Exemple #4
0
        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;
        }
Exemple #5
0
        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++;
        }
Exemple #6
0
        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++;
        }
Exemple #7
0
        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--;
        }
Exemple #8
0
 public DListNode(T item, DListNode <T> next, DListNode <T> prev)
 {
     this.Item = item;
     this.Next = next;
     this.Prev = prev;
 }
Exemple #9
0
 public DList()
 {
     _Head = null;
     _Tail = null;
     _Size = 0;
 }