Skip to content

Commit c7cb49a

Browse files
committed
#223 reverse-linked-list solution
1 parent b4ad510 commit c7cb49a

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

reverse-linked-list/sungjinwi.cpp

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/*
2+
풀이 :
3+
linked-list를 순회하며 stack에 차례대로 push하고 다 넣은 후
4+
pop하면서 역순으로 연결해준다
5+
6+
노드의 개수 : N
7+
8+
TC : O(N)
9+
총 2회 while 반복문 O(N + N)
10+
11+
SC : O(N)
12+
스택은 노드의 개수에 비례
13+
*/
14+
15+
/**
16+
* Definition for singly-linked list.
17+
* struct ListNode {
18+
* int val;
19+
* ListNode *next;
20+
* ListNode() : val(0), next(nullptr) {}
21+
* ListNode(int x) : val(x), next(nullptr) {}
22+
* ListNode(int x, ListNode *next) : val(x), next(next) {}
23+
* };
24+
*/
25+
26+
#include <stack>
27+
using namespace std;
28+
29+
struct ListNode {
30+
int val;
31+
ListNode *next;
32+
ListNode() : val(0), next(nullptr) {}
33+
ListNode(int x) : val(x), next(nullptr) {}
34+
ListNode(int x, ListNode *next) : val(x), next(next) {}
35+
};
36+
37+
class Solution {
38+
public:
39+
ListNode* reverseList(ListNode* head) {
40+
stack<ListNode*> st;
41+
ListNode dummy;
42+
ListNode* prv = &dummy;
43+
ListNode* cur;
44+
45+
while (head)
46+
{
47+
st.push(head);
48+
head = head->next;
49+
}
50+
51+
while (!st.empty())
52+
{
53+
cur = st.top();
54+
prv->next = cur;
55+
prv = cur;
56+
st.pop();
57+
}
58+
prv->next = nullptr;
59+
60+
return dummy.next;
61+
}
62+
};

0 commit comments

Comments
 (0)