Programming/C++
[C++] STACK
100winone
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 |