[leetcode] 206. Reverse Linked List 문제 해결 보고서

1450 단어 LeetCode체인 미터
제목 링크:https://leetcode.com/problems/reverse-linked-list/
Reverse a singly linked list.
click to show more hints.
Hint:
A linked list can be reversed either iteratively or recursively. Could you implement both?
사고방식: 두 가지 방식으로 반전, 귀속과 교체를 실현한다.
교체 방식은 다음과 같습니다.
/**
 * 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 == NULL) return NULL;
        ListNode *p, *q;
        p = head->next;
        head->next = NULL;
        while(p)
        {
            q = p->next;
            p->next = head;
            head = p;
            p = q;
        }
        return head;
    }
};

귀속 방법 코드가 더욱 간결하다
코드는 다음과 같습니다.
/**
 * 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 == NULL || head->next == NULL)
            return head;
        ListNode* p = reverseList(head->next);// 
        head->next->next = head;// 
        head->next = NULL;// 
        return p;
    }
};

귀속 방법 참조:http://blog.csdn.net/yunzhongguwu005/article/details/10350339

좋은 웹페이지 즐겨찾기