-
백준 10828 스택 [C++]알고리즘 2018. 11. 25. 21:01
문제 링크 : https://www.acmicpc.net/problem/10828
소스코드
#include <iostream>#include <string>using namespace std;class Stack {int tos;int *p;int size;public:Stack(int size) {tos = -1;this->size = size;p = new int[size];}~Stack() { delete[] p; }void push(int n);bool pop(int &n);bool empty();int Top();int Size();};void Stack::push(int n) {++tos;p[tos] = n;}bool Stack::pop(int &n) {if (empty()) return false;n = p[tos];--tos;return true;}bool Stack::empty() {if (tos == (-1)) return true;else return false;}int Stack::Top() {return p[tos];}int Stack::Size() {return tos +1;}int main() {int n;cin >> n;string text;cin.ignore();string order;Stack *s=new Stack(10000);for (int i = 0; i < n; ++i) {getline(cin, order);if (order == "pop") {int num;int &pNum=num;if (s->pop(pNum)) cout << num << endl;else cout << -1 << endl;}else if (order== "size")cout << s->Size() << endl;else if (order == "empty") {if (s->empty()) cout << 1 << endl;else cout << 0 << endl;}else if (order == "top") {if (s->empty()) cout << -1 << endl;else cout << s->Top() << endl;}else {int x;x = stoi(order.erase(0,4));s->push(x);}}delete s;}STL을 배우기 전이라 스택 클래스를 직접 구현했습니다.
스택은 제일 나중에 들어온 데이터가 먼저나가는 후입 선출 자료구조 입니다.
스택에 들어 있는 데이터의 개수는 tos 변수를 통해 표현합니다.
비어 있다면 tos 는 -1이고, 1개가 들어있다면 tos는 0 이 됩니다.
0부터 시작하는 것을 주의 하시기 바랍니다.
'알고리즘' 카테고리의 다른 글
백준 1874 스택 수열 [C++] (0) 2018.11.25 백준 5639 이진 검색 트리 [C++] (0) 2018.11.25 백준 9012 괄호 [C++] (0) 2018.11.25 백준 1260 DFS와 BFS [C++] (0) 2018.11.25 백준 1991 트리 순회 [C++] (0) 2018.11.25