class list{
node head;
int length;
}
class node{
String info;
node next;
}
一 先看用迭代(iterative)方式实现代码(JAVA):
public void list_reverse() {
node pos1, pos2, bufnode;
pos1 = head;
pos2 = null;
while (pos1 != null) {
bufnode = pos1;
pos1 = pos1.next;
bufnode.next = pos2;
pos2 = bufnode;
}
head = pos2; //The final list's head is pos2.
}
二 接下来是递归(recursion)代码,比较舒服。:
public void list_reverse() {
head = node_reverse(head);
}
private node node_reverse(node N) {
if(N == null) {
return null;
}
else{
node head = N;
node tail = N.next;
head.next = null;
return node_concat(node_reverse(tail),head);
}
}
private node node_concat(node N1,node N2) {
if(N1 == null) {
return N2;
}
else {
N1.next = node_concat(N1.next,N2);
return N1;
}
}