微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

链表的倒置

@H_502_0@
@H_502_0@

        public static void ReOrder(ref Node listHead)
        {
            if (listHead == null)
            {
                throw new ArgumentNullException("list Head is null!");
            }

            Node leftHead = listHead;
            Node rightHead = null;
            Node current = leftHead.Next;
            leftHead.Next = null;

            while (current != null)
            {
                rightHead = current.Next;
                current.Next = leftHead;
                leftHead = current;
                current = rightHead;
            }

            listHead = leftHead;
        }

 

下面是程序详细代码

 

   class Node
    {
        private int _value = 0;
        public int NodeValue
        {
            get { return this._value; }
            set { this._value = value; }
        }

        private Node _next = null;
        public Node Next
        {
            get { return this._next; }
            set { this._next = value; }
        }

        public Node()
        {
            this._value = 0;
        }

        public Node(int nodeValue)
        {
            this._value = nodeValue;
        }
    }

 

    class ListUtil
    {
        public static void ReOrder(ref Node listHead)
        {
            listHead = ReOrder2(listHead);
        }

        public static void ReOrder(Node listHead)
        {
            listHead = ReOrder2(listHead);
        }

        private static Node ReOrder2(Node listHead)
        {
            if (listHead == null)
            {
                throw new ArgumentNullException("list Head is null!");
            }

            Node leftHead = listHead;
            Node rightHead = null;
            Node current = leftHead.Next;
            leftHead.Next = null;

            while (current != null)
            {
                rightHead = current.Next;
                current.Next = leftHead;
                leftHead = current;
                current = rightHead;
            }

            return leftHead;
        }

        public static void ShowListInfo(Node listHead)
        {
            if (listHead == null)
            {
                throw new ArgumentNullException("listHead");
            }

            Console.WriteLine("{0,-7}{1}","Index","Value");
            int i = 0;
            while (listHead != null)
            {
                i++;
                Console.WriteLine("{0,i,listHead.NodeValue);
                listHead = listHead.Next;
            }
        }
    }

 

    class Program
    {
        static void Main(string[] args)
        {
            Node a = new Node(1);
            Node b = new Node(2);
            Node c = new Node(3);
            Node d = new Node(4);
            Node e = new Node(5);
            Node f = new Node(6);
            a.Next = b;
            b.Next = c;
            c.Next = d;
            d.Next = e;
            e.Next = f;
            f.Next = null;

            Console.WriteLine("Before Reorder:");
            ListUtil.ShowListInfo(a);

           //ListUtil.ReOrder(ref a);
           //Console.WriteLine("After Reorder *With* ref:");
            ListUtil.ReOrder(a);
            Console.WriteLine("After Reorder *Without* ref:");
            ListUtil.ShowListInfo(a);

            Console.Read();
        }
    }

 

 

@H_502_0@

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐