首页 > 编程知识 正文

java单链表反转递归,反转链表有什么用

时间:2023-05-06 02:30:47 阅读:33516 作者:3792

非递归:

列表反转(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 );

返回时间;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。