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;
}
}
}