본문 바로가기

(비정기) Dlbo's Post

Generic Algorithm with C++, 04 - Template Stack!

안녕하신지요.

끌끌

부득이한 사정으로 하루 일찍 포스트를 먼저 띄우게 되는군요.

-_-

-----------------------------------------------------------------------------------------------

이번엔 STL의 스택을 가져다가 이야기해 보지요.

사용자 삽입 이미지
....

죄송

그림이 잘 안그려 지더라구요 -_-

말로 다시 설명을...

스택은 한쪽 입구가 막힌 파이프와 같습니다.

집어 넣을때 막 집어넣고,

나올때는 넣은 순서의 반대로 가지요.

꽤나 단순한 구조입니다.

아마 자료구조를 직접 구현해 볼 때 스택 구현해 본 분 많을겁니다.

리스트 다음으로 만만하잖아요? ㄲㄲㄲㄲ



.....

매우 단순하기 그지 없는 코드입니다.

push는 말 그대로 밀어넣는것.

pop은 스택의 꼭대기에 있는 원소를 뽑아내는 겁니다.

스택의 원소를 top이라고 부르지요.

원체 스택에 대해 배울때 "top을 보려면 pop시켜서 얻어내야 한다"

라는 식으로 저처럼 배운 사람들도 있을겁니다만...

STL의 스택은 그냥 pop이 void형으로 되어 있습니다.

가혹하지요.

....



....

저 가운데 비운건 귀-_-찮아서가 아니구요.

여러분 각자의 상상력에 맡기기 위해섭니다.

변명 아닙니다 -_-

뭐 여튼,

저렇게 스택 자체의 top() 메서드를 이용하면 꼭대기에 있는 top을 얻어 낼 수 있지요.



push랑 pop이 둘다 void라서 말입죠

텅텅 빈 스택에 pop 때림 곤란한 상황이 발생하는데

이에 대한 대처가 불가능합니다.

-_-

이런걸 물건이라고 내놓은게 의심스럽지만... 쓰기 편하니 그냥 쓰죠 뭐 -_-ㅋㅋ

이 코드에 나온 empty() 메소드와 size() 메소드는 이를 위해 준비되었습니다.

pop 시키기 전에 empty() 메소드를 이용해 원소가 아예 없는지 미리 체크를 하고,

size() 메소드는 현재 스택에 원소가 몇개나 들어있는가를 알려주지요.

...

여기서 주의할 점.

스택에는 find() 메소드가 존재하지 않습니다.

....

UVa 101번 블-_-락프라블럼(....)은 스택 STL을 이용해서는 풀 수 없단 의미가 되는거지요.

정말 순수한 스택일 뿐입니다.

-----------------------------------------------------------------------------------------

지쟈스.

스택이 너무 단순하다 보니 글이 지나치게 짧아졌습니다.

사용자 삽입 이미지

고래도 요거보단 낫지 않아요? ㅋㅋㅋ