-
[C++] STACKProgramming/C++ 2020. 1. 2. 16:37
STACK 은 기본적으로 LIFO(LAST IN FIRST OUT) 구조로 된 자료구조이다.
LIFO 가 뭐라함은 말 그대로 나중에 들어간 값이 먼저 나오는 형식이다.
1. 먼저 <stack> 라이브러리를 쓰지않고 직접 구현한 방식이다.
직접 구현을 할 때에 push와 pop 함수를 따로 만들어 구현한다.
/* 라이브러리 없이 STACK 직접 구현*/ #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<vector> #include<algorithm> using namespace std; int stack[100], top = -1; void push(int x) { stack[++top] = x; } int pop() { return stack[top--]; } int main() { int n, k; char str[20] = "0123456789ABCDEF"; scanf("%d %d", &n, &k); while (n > 0) { push(n % k); n /= k; } while (top != -1) { printf("%c", str[pop()]); } return 0; }
2. #include<stack> 을 헤더에 추가해 사용하는 방법이다.
메소드, 즉 사용할 수 있는 내장함수들만 알고 있다면 훨씬 사용하기 간편할 것이다.
/*STACK*/ #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<vector> #include<algorithm> #include<stack> using namespace std; int main() { int n, k; stack<int> s; char str[20] = "0123456789ABCDEF"; scanf("%d %d", &n, &k); while (n > 0) { s.push(n % k); n /= k; } while (!s.empty()) { printf("%c", str[s.top()]); s.pop(); } return 0; }
STACK의 대표적인 멤버 s.pop() 스택의 가장 상단의 값을 삭제 s.push(param) param을 스택에 push s.empty() 스택이 비어있나 체크
비어있으면 1 , 아니면 0 return
s.top() 스택의 가장 상단의 값을 return s.size() 스택의 사이즈 return 'Programming > C++' 카테고리의 다른 글
[C++] DFS 깊이우선탐색 (0) 2020.01.05 [C++] Recursion 재귀함수 (0) 2020.01.03 [C++] Vector (0) 2019.12.23