자료구조

스택(Stack)

물장구질 2017. 1. 21. 15:25








  • 스택 기본 구조



-스택은 입출력이 한방향으로 이루어 진다(자료를 입력하는 쪽과 출력하는 쪽이 같다).

-늦게 들어온 자료가 더 빨리 나가는 구조(LIFO : Last in First out).

-일반적으로 스텍에서 입력을 Push, 출력을 Pop이라고 한다.






현실에서 LIFO의 예



  • 스택의 삽입(Push)

-스택의 삽입은 가장 앞쪽에서 이루어 진다.


-위 그림에서 Head노드는 데이터는 갖지 않고, 첫번째 노드의 위치를 저장하는 노드다

(Head노드에도 데이터를 저장한다면, 삽입 노드가 Head노드가 되게하면 된다).



Head노드의 다음노드(Next) = 삽입노드

삽입 노드의 다음노드(Next) = 노드#01(첫번째 데이터 노드)




삽입 완료





  • 스택의 출력(Pop)



출력(Pop) 요청시 첫번째 노드를 출력




Head노드의 다음노드(Next)를 2번째 노드(출력 노드의 Next)로 지정

( = 2번째 노드를 첫번째 노드로 만듬)



데이터 전달 & 노드를 삭제를 완료하면

출력 종료




  • 전체 코드




  • 템플릿으로 구현한 스택