示例#1
0
        /// <summary>
        /// 追加一个元素
        /// </summary>
        /// <param name="data"></param>
        public void Add(T data)
        {
            var newNode = new LinkListNode <T>(data);

            // Length为0,代表当前链表是空的
            // 直接把新节点放入头节点
            if (Length == 0)
            {
                Head = newNode;
                Length++;
                return;
            }

            // 找到最后一个节点,将新节点放入Next指针下
            this.Last.Next = newNode;
            Length++;
        }
示例#2
0
        /// <summary>
        /// 追加一个元素
        /// </summary>
        /// <param name="data"></param>
        public void Add(T data)
        {
            var newNode = new LinkListNode <T>(data);

            // Length为0,代表当前链表是空的
            // 直接把新节点作为尾节点,并将尾节点的下一个节点指向自己
            if (Length == 0)
            {
                Rear      = newNode;
                Rear.Next = Rear;
                Length++;
                return;
            }

            // 设置新节点的下一个节点为头节点
            // 设置当前尾节点的下一个节点为新节点
            // 将新节点设置为尾节点
            newNode.Next = Rear.Next;
            Rear.Next    = newNode;
            Rear         = newNode;
            Length++;
        }
示例#3
0
        /// <summary>
        /// 插入
        /// </summary>
        /// <param name="index"></param>
        /// <param name="item"></param>
        public void Insert(int index, T item)
        {
            // index溢出
            if (index < 0 || index > Length - 1)
            {
                return;
            }

            // index为0,代表要插入头部
            // 将新节点的Next指针指向当前头节点
            // 并将新节点直接作为头节点
            if (index == 0)
            {
                var newHead = new LinkListNode <T>(item, Rear.Next);
                Rear.Next = newHead;
                Length++;
                return;
            }

            // 找到前继节点
            int prevIndex = index - 1;
            var prevNode  = Get(prevIndex);

            if (prevNode == null)
            {
                return;
            }

            // 找到指定index对应的节点(前继节点的Next指针指向的节点)
            // 将新节点的Next指针指向index对应节点的Next指针指向的节点
            // 前继节点的Next指针指向新节点,完成新节点的插入操作
            var newNode = new LinkListNode <T>(item, prevNode.Next);

            prevNode.Next = newNode;
            Length++;
        }