题目:定义一个函数,输入一个链表的头结点,反转链表并输出反转后的链表头结点
思路:三个指针,pre指向已经完成的链表头结点,middle指向要操作的结点,next指向没操作的节点
public class ReverseList {
public static Node reverseList(Node head){
if(head==null)
return null;
else if(head.getNext()==null)
return head;
else{
Node pre = null;
Node middle = head;
Node next = head.getNext();
while(next!=null){
middle.setNext(pre);
pre = middle;
middle = next;
next = next.getNext();
}
middle.setNext(pre);
return middle;
}
}
}
class Node{
private Integer data;
private Node next;
public Integer getData() {
return data;
}
public void setData(Integer data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public Node() {
super();
}
public Node(Integer data) {
this.data = data;
next = null;
}
@Override
public String toString() {
return "Node [data=" + data + "]";
}
}