递归反转链表

xiaoxiao2021-02-28  40

输入一个链表,反转链表后,输出链表的所有元素。

链接:https://www.nowcoder.com/questionTerminal/75e878df47f24fdc9dc3e400ec6058ca 来源:牛客网

struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; class Solution { public: ListNode* ReverseList(ListNode* pHead) { //如果链表为空或者链表中只有一个元素 if(pHead==NULL||pHead->next==NULL) return pHead; //先反转后面的链表,走到链表的末端结点 ListNode* pReverseNode=ReverseList(pHead->next); //再将当前节点设置为后面节点的后续节点 pHead->next->next=pHead; pHead->next=NULL; return pReverseNode; } };

在用递归的时候,把递归函数当成一个黑盒子,不要老是想着递归里的具体实现,而是只是把递归函数当成一个普通的调用函数,对这个函数,你需要知道他的输入与输出。另外要设置好边界条件跳出。

比如最简单的n的阶乘的递归实现,代码如下。

function factorial (n) { if (n === 1) { return n; } else { return n * factorial(n-1); } }
转载请注明原文地址: https://www.6miu.com/read-2632890.html

最新回复(0)