コード例 #1
0
        /// <summary>
        /// 获取倒数第几个
        /// 1、index表示是倒数第index个节点
        /// 2、先把链表从头到尾遍历,得到链表的总的长度
        /// 3、得到size后,我们从链表的第一个开始遍历(size-index)个,就可以得到
        /// </summary>
        /// <returns></returns>
        public HeroNode FindLastIndexNode(int index)
        {
            HeroNode temp = head;

            if (temp.Next == null)
            {
                return(null);
            }
            int size = GetLinkedListCount(); //得到链表的总长度

            if (index <= 0 || index > size)  //对index做个验证
            {
                return(null);
            }
            for (int i = 0; i < size - index; i++)
            {
                temp = temp.Next;
            }
            return(temp.Next);
        }
コード例 #2
0
        /// <summary>
        /// 利用头插法来实现链表反转
        /// </summary>
        /// <param name="heroNode"></param>
        public void ReverSetList()
        {
            var temp = head.Next;

            if (temp.Next == null || temp.Next.Next == null)  //判断单列表是否等于空 or 单列表是否只有一个,无需反转
            {
                return;
            }
            var reverSeHead = new HeroNode(0, "");//定义一个接收的容器

            while (true)
            {
                var next = temp.Next; //定义记录当前节点下一个节点
                temp.Next        = reverSeHead.Next;
                reverSeHead.Next = temp;
                temp             = next;
                if (next == null)
                {
                    break;
                }
            }
            head.Next = reverSeHead.Next;
        }