我们要想反转单链表,必须增加一个指针指向q的下一个节点,这样当q的next指向p时,原来的q->next才不会失去。
使用p和q连个指针配合工作,使得两个节点间的指向反向,同时用r记录剩下的链表。
下图为摘抄,代码是自己写的。
p = head;
q = head->next;

head->next = NULL;

现在进入循环体,这是第一次循环。
r = q->next;
q->next = p;

p = q;
q =r;

第二次循环。
r = q->next

q->next = p;

p = q;

q = r

第三次循环。。。。。
public class Link
{
public Link Next;
public string Data;
public Link(Link next, string data)
{
this.Next = next;
this.Data = data;
}
}
public static Link ReverseLink(Link head) //head为第一个结点前的空节点
{
Link p=head.Next;
if(p || p.Next) return head;
head.Next=null;
Link q=p.Next;
while(q)
{
r=q.Next;
q.Next=p;
p=q;
q=r;
}
head=p;
return p;
}原文地址:http://kylinxue.blog.51cto.com/9555702/1604067