题目:
定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。
解题思路:
运用两个额外节点保存当前节点上一节点和当前节点下一节点,依次遍历时,改变当前节点指向前一节点,直到遍历完成
代码如下:
import java.io.IOException;
public class test {
public static void main(String[] args) throws IOException {
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);
n1.next = n2;
n2.next = n3;
n3.next = n4;
n4.next = n5;
n5.next = n6;
Node n = change(n1);
for(int i=0;i<6;i++) {
System.out.println(n.data);
n = n.next;
}
}
public static Node change(Node n) {
if(n==null) {
return null;
}
Node m = n.next;
Node q = n;
n.next = null;
n = m.next;
m.next = q;
q = m;
m = n;
n = q;
while(m!=null&&n!=null) {
n = m.next;
m.next = q;
q = m;
m = n;
n = q;
}
if(m!=null) {
return m;
}else
return n;
}
public static class Node{
int data;
Node next;
Node(int d){
this.data = d;
next = null;
}
}
}