체인 테이블 - 26.체인 테이블 반전

1215 단어
단일 체인 테이블을 반전합니다.예: 입력: 1->2->3->4->5->NULL 출력: 5->4->3->2->1->NULL 진급: 체인 테이블을 교체하거나 귀속시킬 수 있습니다.너는 두 가지 방법으로 이 문제를 해결할 수 있니?

반복 해법

 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(!head) return head;
        ListNode* cur=head;
        ListNode* pre=nullptr;
        while(cur!=nullptr)
        {
            ListNode* next=cur->next;
            // 
            cur->next=pre;
            // 
            pre=cur;
            cur=next;
        }
        return pre;
    }
};

귀속 해법

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(!head||!head->next) return head;
        ListNode* newHead=reverseList(head->next);
        head->next->next=head;
        head->next=nullptr;
        return newHead;
    }
};

좋은 웹페이지 즐겨찾기