티스토리 뷰

반응형

지난 포스트에서 스택에 대해 알아보았다.

이전 포스트: https://crong-dev.tistory.com/10

 

[자료구조] 스택(stack) / 백준 10828 (C)

스택이란? 삽입과 제거가 한쪽 끝에서만 이루어지는 특수한 선형 리스트. 후입 선출(Last-In-First-Out) 구조이다. 즉, 가장 마지막에(최신에) 들어온 데이터가 가장 먼저 나간다. 스택의 주요 연산 - p

crong-dev.tistory.com

이번 포스트에서는 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
링크
«   2024/10   »
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
글 보관함