반응형
문제: https://www.acmicpc.net/problem/10828
스택은 데이터의 입력과 출력이 한쪽 방향으로만 이루어지기 때문에 배열을 이용해서 구현할 수 있습니다.
#include <iostream>
#include <string>
struct stack
{
int arr[10000];
int top_index = -1;
// arr[top]을 리턴하고 top을 1 감소시킨다.
int pop()
{
if (isEmpty())
return -1;
return arr[top_index--];
}
// top을 1 증가시키고 arr[top]에 저장
void push(int n)
{
arr[++top_index] = n;
}
// top + 1 리턴
int size()
{
return top_index + 1;
}
// top이 -1이면 1 리턴, 아니면 0 리턴
int isEmpty()
{
return top_index == -1 ? 1 : 0;
}
// arr[top] 리턴
int top()
{
if (isEmpty())
return -1;
return arr[top_index];
}
};
int main()
{
int N;
std::string arg;
stack myStack;
std::cin >> N;
while (N--)
{
int result;
std::cin >> arg;
if (arg == "push")
{
int num;
std::cin >> num;
myStack.push(num);
}
else if (arg == "pop")
{
std::cout << myStack.pop() << std::endl;
}
else if (arg == "size")
{
std::cout << myStack.size() << std::endl;
}
else if (arg == "empty")
{
std::cout << myStack.isEmpty() << std::endl;
}
else if (arg == "top")
{
std::cout << myStack.top() << std::endl;
}
}
}
반응형
'알고리즘 > 알고리즘+자료구조' 카테고리의 다른 글
[자료구조] 연결리스트 구현하기 (C++) (0) | 2022.03.08 |
---|