티스토리 뷰
반응형
지난 포스트에서 스택에 대해 알아보았다.
이전 포스트: https://crong-dev.tistory.com/10
이번 포스트에서는 c++에서 스택 사용법에 대해 알아보겠다.
C++에서는 지난 포스트에서 C언어로 한 것 처럼 함수를 일일이 구현할 필요가 없다.
스택 헤더가 있기 때문이다!
#include <stack>
위 처럼 스택 헤더를 include해주면 된다.
스택 생성 방법
// stack<원소 자료형> 스택 변수 이름; 으로 선언해주면 된다.
// 스택 원소의 자료형이 int이고 해당 스택의 이름을 st라고 하고 싶은 경우
stack<int> st;
C++ 스택 헤더의 스택 주요 연산 함수를 알아보자.
스택의 주요 연산
- push(element)
: 스택에 원소 삽입
- pop()
: 스택에서 원소 제거 - 가장 위의 원소 // 반환값은 없다
- top()
: 가장 위에 있는 원소 반환
- empty()
: 스택이 비었는지 확인. 스택이 비어있으면 true 아니면 false를 반환.
- size()
: 스택 사이즈(현재 몇 개의 원소인지)를 반환
아래는 C++로 스택의 주요 연산을 구현한 것이다. 백준 10828문제의 소스코드이다.
(문제링크: www.acmicpc.net/problem/10828)
#include <iostream>
#include <string>
#include <stack>
using namespace std;
stack<int> st; //스택 생성. <>안에는 원소의 타입을 적어주면 된다
int main() {
int N;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
string command;
cin >> command;
if (command == "push") {
int x;
cin >> x;
st.push(x);
}
else if (command == "pop") {
if (!st.empty()) {
cout << st.top() << endl;
st.pop();
}
else {
cout << -1 << endl;
}
}
else if (command == "size") {
cout << st.size() << endl;
}
else if (command == "empty") {
cout << st.empty() << endl;
}
else if (command == "top") {
if (!st.empty()) {
cout << st.top() << endl;
}
else {
cout << -1 << endl;
}
}
}
return 0;
}
반응형
'자료구조 > 자료구조 공부' 카테고리의 다른 글
[자료구조] 큐(queue) (0) | 2020.11.21 |
---|---|
[자료구조] 스택(stack) / 백준 10828 (C) (0) | 2020.11.19 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자료구조
- 큐
- 개발
- 머신러닝
- 컴퓨터과학
- dash-plotly
- 동적계획법
- 우선순위큐
- 프로그래머스
- React
- 자바스크립트
- 알고리즘
- JS
- 컴퓨터공학
- 리액트
- 코드포매터
- dfs
- 스택
- Dash
- plotly
- 코테후기
- reactjs
- 회고
- sql
- 후위표기식
- 카카오추천팀
- MySQL
- 다이나믹프로그래밍
- 백준
- c++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함