酷代码 AI
菜单
服务商

C++开发必备:手写代码实现链表反转(迭代与递归两种方式)

这是一个常见的链表操作问题,可以通过迭代或递归的方式来解决。下面是两种不同的实现方式。 1. 迭代实现: ```cpp struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; ListNode* reverseList(ListNode* head) { ListNode* prev = NULL; ListNode* curr = head; while (curr != NULL) { ListNode* nextTemp = curr->next; curr->next = prev; prev = curr; curr = nextTemp; } return prev; } ``` 2. 递归实现: ```cpp ListNode* reverseList(ListNode* head) { if (head == NULL || head->next == NULL) { return head; } ListNode* newHead = reverseList(head->next); head->next->next = head; head->next = NULL; return newHead; } ``` 在这两种实现方式中,我们都是通过改变节点的指针来实现链表的反转。在迭代实现中,我们使用三个指针prev、curr和nextTemp来完成这个过程。在递归实现中,我们首先递归地反转链表的剩余部分,然后改变当前节点的指针,使其指向原来的头节点,最后返回新的头节点。 ######[AI写代码神器 | 280点数解答 | 2023-11-09 00:48:59]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]