206. Reverse Linked List的C++解法

来源:互联网 发布:金税盘开票软件进不去 编辑:程序博客网 时间:2024/05/24 07:11

保存当前节点、前一个节点和下一个节点即可。

class Solution {public:
    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;}};


还有一种递归方法。假设链表为 n1 → … → nk-1 → nk → nk+1 → … → nm → Ø,如果nk+1 到nm 已经被翻转了,当前我们位于nk,链表现在是n1 → … → nk-1 → nk → nk+1 ← … ← nm,把nk也翻转后会有:nk.next.next = nk

class Solution {public:ListNode* reverseList(ListNode* head) {if (head == NULL || head->next == NULL) return head;    ListNode* p = reverseList(head->next);    head->next->next = head;    head->next = NULL;    return p;  }};



原创粉丝点击