206. Reverse Linked List
stackに入れるのはすぐに思いつくが、取り出しでつまずいた。アドレスを意識できないと解けない問題だった。難易度はeasyだけど、自分はアドレスが意識できていないのがよくわかった。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* reverseList(ListNode* head) { if(!head){ return head; } stack<ListNode*> stackedList; while(head){ stackedList.push(head); head = head->next; } ListNode* reversedList = stackedList.top(); stackedList.pop(); ListNode* tmp = reversedList; while(!stackedList.empty()){ tmp->next = stackedList.top(); stackedList.pop(); tmp = tmp->next; tmp->next = NULL; } return reversedList; } };