본문 바로가기

old_Coding/C/C++

[C++] STACK Linked List 작성






이번엔 Stack입니다.
Stack이란, 리스트의 한가지 특수구조로 봐도 될것같은데요.
위로 쌓이는 물건들이라고 생각하면 쉽습니다.

맨처음 놓인 물건이 A 라고 하고 순서대로 G까지 쌓는다면,
A B C D E F G 가 되겠죠? 맨 처음 들어온건 A이고 맨 나중에 들어온건 G입니다.
자, 여기서 제가 이것들을 옮기려고 합니다.
바닥에서부터 위로 쌓았다면 가장먼저 손이 가는것은??
G겠죠.
바닥위에 있는 A를 만지려면 위에있는 G F E D C B 를 모두 치워야 합니다.

이런 개념인데요. 맨 나중에 들어온것을 가장 먼저 처리하는 방식입니다.
List라는것은 임의의 장소에 들어가도 무관합니다.
그러나, Stack은 임의의 장소가 아니라 Top(List에서 Head)만을 접근하는 방식입니다.

List에서 충분히 이해를 하셨다면 소스파일중 변경된 부분만 설명드리면 될것같습니다.


살펴봅시다.



void Push_Stack(int Data) ;  // 스택에 푸시
Push 라고 표현합니다. 리스트에서 Insert처럼 어떤 데이터값을 삽입하는 함수입니다.
그러나, List와는 다르게 가장 위에 쌓는 형식이니까
맨 첫번째에 삽입하는 특수한 Insert형태라고 보시면 되겠습니다.
Position 이라는 변수가 없는것도 어차피 맨 첫번째에 삽입되기 때문이겠죠^^


void Pop_Stack() ;    // 스택을 팝
그렇다면 Pop은?? Delete함수와 비슷하겠죠.
역시 맨 첫번째있는 노드만 건드립니다. 즉, Top이 잡고있는 노드를 삭제합니다.
물론, 삭제전에 Top포인터를 2번째 노드로 옮긴후 1번째 노드를 삭제해야겠죠.
역시 Position이 없습니다. 첫번째있는 노드를 삭제할꺼니까~



다른 함수들은 이미 List에서 다 쓰였던거고
필자도 컨트롤+씨 컨트롤+브이 해서 올린겁니다.

List가 임의의 자리에 노드가 삽입,삭제된다면
Stack은 항상 첫번째에서만 삽입, 삭제가 이루어집니다.
첫번째 자료만 접근하는 방법. 그러한 구조를
STACK 이라고 부릅니다!!