单链表反转
单链表反转的一种Java实现如下:
public class LinkedList<T extends Comparable<T>> {
private LinkedNode<T> head;
private LinkedNode<T> tail;
public LinkedList() {
}
public void add(T t) {
if (t == null) {
return;
}
LinkedNode n = new LinkedNode(t, null);
if (tail == null) {
tail = n;
head = tail;
} else {
tail.next = n;
tail = n;
}
}
/**
* 单链表反转
*/
public void reverse() {
if (head == null || head.next == null) {
return;
}
LinkedNode<T> newHead = null;
LinkedNode<T> newTail = null;
LinkedNode<T> p = head;
LinkedNode<T> q = p.next;
while (p != null) {
p.next = newHead;
newHead = p;
if (newTail == null) {
newTail = newHead;
}
if (q == null) {
break;
}
p = q;
q = q.next;
}
head = newHead;
tail = newTail;
}
}
class LinkedNode<T extends Comparable<T>> {
public T value;
public LinkedNode next;
public LinkedNode() {
}
public LinkedNode(T value, LinkedNode next) {
this.value = value;
this.next = next;
}
}

浙公网安备 33010602011771号