反轉鏈表

package com.dugstudio.SwordToOfferBook.Singleton.Interview;

/**
* @Author JH
* @CreateDate 18-6-8
* @Description 反轉鏈表
*/
public class ReverseList {
public Node ReverseList(Node head){
Node h ,p,q,hn;//h當前節點的上一個節點 p當前節點 p的下一個節點 hn保存頭結點 最後使他指向null
Node hh=new Node(-1);//新建一個頭結點
hh.next=head;
h=hh;
if(head==null){
return null;
}
if (head.next!=null){
p=hh.next;
hn=hh.next;
}else{
return null;
}
while(p!=null){
//尾節點需要將頭結點指向尾節點,並將第一個節點head的next指定爲null
if (p.next==null){
hh.next=p;
p.next=h;
hn.next=null;
return hh.next;
}else{
q=p.next;
p.next=h;
h=p;
p=q;
}

    }
    return null;
}

public static void main(String[] args) {
    Node head=new Node(0);
    Node n1=new Node(1);
    Node n2=new Node(2);
    Node n3=new Node(3);
    Node n4=new Node(4);
    Node n5=new Node(5);
    Node n6=new Node(6);
    Node n7=new Node(7);
    head.next=n1;
    n1.next=n2;
    n2.next=n3;
    n3.next=n4;
    n4.next=n5;
    n5.next=n6;
    n6.next=n7;
    n7.next=null;
    ReverseList r=new ReverseList();
    Node h=r.ReverseList(head);
    while(h!=null){
        System.out.println(h.value);
        h=h.next;
    }
}

}

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