c_cpp 反向链表,迭代,递归
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 反向链表,迭代,递归相关的知识,希望对你有一定的参考价值。
ListNode* reverse_list_recursive(ListNode *head) {
if(!head) return head;
if(!head->next) return head;
ListNode *new_head = reverse_list_recursive(head->next);
head->next->next = head;
head->next = NULL;
return new_head;
}
void reverse(Node*& p) {
if (!p) return;
Node* rest = p->next;
if (!rest) return;
reverse(rest);
p->next->next = p;
p->next = NULL;
p = rest;
}
ListNode* reverse_list_iterative(ListNode *head) {
if(!head || !head->next) return head;
ListNode *pre = NULL, *cur = head;
while(cur) {
ListNode *nxt = cur->next;
cur->next = pre;
pre = cur;
cur = nxt;
}
return pre;
}
以上是关于c_cpp 反向链表,迭代,递归的主要内容,如果未能解决你的问题,请参考以下文章
C++怎么利用递归实现单线链表的反向输出??
c_cpp 合并两个排序列表,递归和迭代
c_cpp 查找链接列表的长度(迭代和递归)
使用递归的链表反向打印的意外结果
c_cpp 搜索链接列表中的元素(迭代和递归)
c_cpp 仅使用2个指针迭代地反转链表(一种有趣的方法)