方法:从第2个节点到第n个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾。
代码:
public class Node {
private int key;
private Node next;
public Node(int key) {
// TODO Auto-generated constructor stub
this.key = key;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public int getKey() {
return key;
}
public void setKey(int key) {
this.key = key;
}
public static Node ReverseList(Node head) {
Node p,q; int n=1;
p=head.next;
while(p.next!=null) //在这个循环过程中p所指的元素一直是不变的
{
q=p.next;
p.next=q.next;
q.next=head.next;
head.next=q;
}
p.next=head; //相当于成环
head=p.next.next; //新head变为原head的next
p.next.next=null; //断掉环
while(head!=null)
{
System.out.println("倒数第"+n+"个数为"+head.key);
head=head.next;
n++;
}
return head;
}
public static void main(String[] args) {
Node head=new Node(0);
Node node1=new Node(1);
Node node2=new Node(2);
Node node3=new Node(3);
Node node4=new Node(4);
head.setNext(node1);
head.setNext(node1);
node1.setNext(node2);
node2.setNext(node3);
node3.setNext(node4);
node4.setNext(null);
ReverseList(head);
}
}