天天看點

中科院軟體所面試

1. 問履歷上的項目

2. 問會的語言和架構,程式設計能力,代碼品質

3. 算法題

翻轉連結清單

Leetcode: https://leetcode.com/problems/reverse-linked-list/submissions/

ACWing:https://www.acwing.com/problem/content/33/

需要記錄一個前驅結點(pPre)個一個後繼結點(pNext)。

ListNode* reverseList(ListNode* head) {
        if (!head) return nullptr;
        ListNode* pNode = head;
        ListNode* pPre = nullptr;
        while(pNode){
            ListNode* pNext = pNode->next;
            pNode->next = pPre;
            pPre = pNode;
            pNode = pNext;
        }
        return pPre;
    }
           

或者

ListNode* reverseList(ListNode* head) {
        if (!head) return nullptr;
        ListNode* pNode = head;
        ListNode* pPre = nullptr;
        ListNode* newHead = nullptr;
        while(pNode){
            ListNode* pNext = pNode->next;
            if (!pNext){
                newHead = pNode;
            }
            pNode->next = pPre;
            pPre = pNode;
            pNode = pNext;
        }
        return newHead;
    }