template <typename T>
class ListNode{
public:
ListNode *next;
T elements;
};非递归
ListNode *ReverseList1(ListNode *root)
{
ListNode *link,*prev=nullptr;
while(root){
link=root->next;
root->next=prev;
prev=root;
root=link;
}
return prev;
}递归
ListNode *ReverseList2(ListNode *pre, ListNode *cur)
{
if(!cur)
return pre;
ListNode *link = cur->next;
cur->next = pre;
return ReverseList2(cur,link);
}
本文介绍两种链表反转的方法:非递归方式与递归方式。非递归方式通过迭代逐个改变每个节点的指向实现反转;递归方式则利用递归特性从链表尾部开始重新连接节点。

513

被折叠的 条评论
为什么被折叠?



