反轉單鏈表

我們要想反轉單鏈表,必須增加一個指針指向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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章