非递归:
列表反转(listl ) {
PtrToNode head,temp;
if (! l )返回;
head=L;
L=L-Next;
头下一个=空;
wile(L ) {
temp=L;
L=L-Next;
temp -Next=head;
head=temp;
}
返回头;
}
递归:交换节点连接
//递归实现,节点发生变化
//递归回溯法:要点1 .退出条件是什么? 然后做什么? 2 .一直没有达到结束条件递归,摆脱递归后做什么,回到什么条件
列表反转(listl ) {
//递归到最后一个节点
if(L!=NULL || L -Next==NULL ) {
返回l;
}
else{ //递归追溯部分,先反转后面的节点,到最后一个节点
listhead=reverse(L-next );
//使当前节点成为后面节点的后继节点
L-Next-Next=L;
L-Next=NULL;
返回头;
}
}
递归:交换值
voidswap(int*a,int* b ) {
int temp;
temp=*a;
*a=*b;
* b=时间;
}
voidswaplist (列表,列表头) {
if(L==null||L-next==null ) {
swap () head-data ),) L-Data );
}
else{ //递归追溯部分,先反转后面的节点,到最后一个节点
软件列表(l-next,head );
//使当前节点成为后面节点的后继节点
头下一步!=L}{
head=head-Next;
}
}
}
//递归上溯,交换值
//递归上溯,交换值
列表反转(listl ) {
//递归到最后一个节点
if (! l )返回l;
列表头=l;
列表时间=l;
软件列表(l,head );
返回时间;
}