码迷,mamicode.com
首页 > 其他好文 > 详细

反转单链表

时间:2015-01-15 01:55:41      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:public   记录   

我们要想反转单链表,必须增加一个指针指向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;
}


反转单链表

标签:public   记录   

原文地址:http://kylinxue.blog.51cto.com/9555702/1604067

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!