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,-7}{1}",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();
}
}