反转链表
有一个单向链表t如下:
t = 1->2->3->4->5->6->7->8->9
写一个方法反转链表t如下:
1<-2<-3<-4<-5<-6<-7<-8<-9 = t
java代码:
package test;
/**
* 节点类
*/
class Node{
public int data;
public Node next;
public Node(int data,Node next) {
this.data=data;
this.next=next;
}
public Node(int data) {
this.data=data;
}
}
public class TestMain3{
public static void main(String[] args){
Node n=new Node(9);
n=new Node(8,n);
n=new Node(7,n);
n=new Node(6,n);
n=new Node(5,n);
n=new Node(4,n);
n=new Node(3,n);
n=new Node(2,n);
n=new Node(1,n);
System.out.print("反转前:");
Node t=n;
// t = 1->2->3->4->5->6->7->8->9
while(t!=null) {
System.out.print(t.data+" ");
t=t.next;
}
System.out.println();
System.out.print("反转后:");
t=trans(n);
// 1<-2<-3<-4<-5<-6<-7<-8<-9 = t
while(t!=null) {
System.out.print(t.data+" ");
t=t.next;
}
}
/**
* 反转链表
* @param n
* @return
*/
public static Node trans(Node n) {
Node t;
if(n.next!=null) {
t = trans(n.next);
n.next.next=n;
n.next=null;
}else {
return n;
}
return t;
}
}