题目描述:
【题目】 分别实现反转单向链表和反转双向链表的函数。
【要求】 如果链表长度为N,时间复杂度要求为O(N),额外空间
复杂度要求为O(1)
代码如下
public class Code_011_ReverseList {
public static class Node {
public int data;
public Node next;
public Node(int data) {
this.data = data;
}
}
public static Node reverseList(Node head) {
Node prev = null;
Node next = null;
while(head != null) {
next = head.next;
head.next = prev;
prev = head;
head = next;
}
return prev;
}
public static class DoubleNode {
public int data;
public DoubleNode next, last;
public DoubleNode(int data) {
this.data = data;
}
}
public static DoubleNode reverseDoubleList(DoubleNode head) {
DoubleNode prev = null;
DoubleNode next = null;
while(head != null) {
next = head.next;
head.next = prev;
head.last = next;
prev = head;
head = next;
}
return prev;
}
}