Beispiel #1
0
        public void Push(int _element)
        {
            if (headNode == null)
            {
                // создать узел, сделать его головным
                this.headNode = new Node();
                this.headNode.Element = _element;
                // этот же узел и является хвостовым
                this.tailNode = this.headNode;
                // следующего узла нет
                this.headNode.SetNextNode(null);
            }
            else
            {
                // создать временный узел
                Node newNode = new Node();
                // следующий за предыдущим хвостовым узлом - это наш временный новый узел
                this.tailNode.SetNextNode(newNode);
                // сделаь его же новым хвостовым
                this.tailNode = newNode;
                this.tailNode.Element = _element;
                // слудующего узла пока нет
                this.tailNode.SetNextNode(null);
            }

            ++this.Length;
        }
Beispiel #2
0
 public void Reverse()
 {
     //Создаем 1 вспомогательную ссылку и ссылку на новую голову. 
     Node helpNode = new Node();
     Node newHead = null;
     /* Смещаем голову на следующий элемент, пока не дойдем до конца, после чего у реальной головы ставим next в newHead, и newHead присваиваем этот узел. Рекомендую проделать на бумажке для понимания.               
     */
     while ((helpNode = headNode) != null)
     {
         headNode = headNode.Next;
         helpNode.next = newHead;
         newHead = helpNode;
     }
     headNode = newHead;
 }
Beispiel #3
0
 public void SetNextNode(Node _nextNode)
 {
     this.next = _nextNode;
 }