用java实现反转链表:
对节点类的定义:
static class Node{
int value;
Node next;
public Node(int value) {
this.value = value;
next=null;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
测试类:
public class Test {
public static void main(String[] args) {
Node head=new Node(0);
Node cur=null;
Node t=null;
for(int i=1;i<10;i++){
t=new Node(i);
if(i==1)
head.setNext(t);
else
cur.setNext(t);
cur=t;
}
show(head);
Node h=fanzhuan(head);
show(h);
}
private static Node fanzhuan(Node head) {
if(head==null)
return head;
Node pre=head;
Node p=head.getNext();
Node pNext=null;
while(p!=null){
pNext=p.getNext();
p.setNext(pre);
pre=p;
p=pNext;
}
head.setNext(null);
head=pre;
return head;
}
private static void show(Node head) {
if(head==null)
return;
else {
while (head!=null){
System.out.print(head.getValue()+" ");
head=head.getNext();
}
}
System.out.println();
}
运行结果:
0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0