加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

链表的倒置

发布时间:2020-12-14 05:52:03 所属栏目:百科 来源:网络整理
导读:??????? public static void ReOrder(ref Node listHead) ??????? { ??????????? if (listHead == null) ??????????? { ??????????????? throw new ArgumentNullException("list Head is null!"); ??????????? } ??????????? Node leftHead = listHead; ????

??????? 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();
??????? }
??? }

?

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读