コード例 #1
0
        public MyLinkedNode <T> PopTail()
        {
            var oldTail = Tail;

            Tail = GetLastNodeManually();
            return(oldTail);
        }
コード例 #2
0
        public MyLinkedNode <T> PopHead()
        {
            var oldHead = Head;

            Head = Head.Next;

            return(oldHead);
        }
コード例 #3
0
 public void InsertAtEnd(T value)
 {
     if (Head == null)
     {
         Head = new MyLinkedNode <T>(value);
         Tail = Head;
     }
     else
     {
         Tail.Next = new MyLinkedNode <T>(value);
         Tail      = Tail.Next;
     }
 }
コード例 #4
0
 public void InsertAsHead(T value)
 {
     if (Head == null)
     {
         Head = new MyLinkedNode <T>(value);
     }
     else
     {
         var newHead = new MyLinkedNode <T>(value);
         newHead.Next = Head;
         Head         = newHead;
     }
 }
コード例 #5
0
        public static void ReverseList(MyLinkedList <T> list)
        {
            var current = list.Head;
            MyLinkedNode <T> prev = null, next = null;

            while (current.Next != null)
            {
                next = current.Next;

                current.Next = prev;
                prev         = current;

                current = next;
            }

            current.Next = prev;
            list.Head    = current;
        }
コード例 #6
0
 public MyLinkedList()
 {
     Head = null;
     Tail = null;
 }
コード例 #7
0
 public MyLinkedNode(T value)
 {
     Value = value;
     Next  = null;
 }