单链表反转

配套的单链表实现在另一篇博客。

因为是C#来解决的嘛,这个问题解决的话,所以用While循环和三个引用来做。

        /// 
        /// 反转链表
        /// 
        public Link ReversalLinkList()
        {
            Link curr = Head.Next;
            Link next = null;
            Link nextnext = null;

            //当这是一个空链表的情况下
            if (curr.Next == null)
            {
                return Head;
            }
            //当不是空链表的情况下
            while (curr.Next != null)
            {
                next = curr.Next;       //1
                nextnext = next.Next;   //2

                next.Next = Head.Next;  //3
                Head.Next = next;       //4

                curr.Next = nextnext;   //5
            }
            return Head;
        }

关键步骤标了号,先看1,2,再想3,4,最后再看5,刚开始看还挺蒙的,画张图帮助理解下。

单链表反转_第1张图片

你可能感兴趣的:(算法)