티스토리 뷰

배열을 이용한 스택을 구현해 보겠습니다. 

스택이란 ?

Last In First Out구조로써, 처음 들어간 데이터가 가장 마지막에 나오게 되는 구조 입니다.

상자를 쌓을때, 상자를 가장 밑바닥 부터 차근차근 쌓아 올리는 것과 반대로, 상자를 빼낼떄에는 가장 마지막에 쌓은 상자를 가장 처음 꺼낸다는 원리와 같은 원리 입니다. 컴퓨터구조에서 이 이론은 리턴값, 즉 함수를 실행하고 돌아갈 위치가 메모리에 스택 구조로 쌓인다고 생각하시면 됩니다.

여튼 이런 스택을 구현해 보겠습니다.


//

//  main.c

//  기본

//

//  Created by 이태우 on 2014. 10. 1..

//  Copyright (c) 2014 taewoo. All rights reserved.

//


#include <stdio.h>


int main(int argc, const char * argv[])

{


    char stack[5];

    int top =0;

    

    char boxName ='A';

    int select =9;

    

    while(select !=3)

    {

        printf("<1> 상자 쌓기 <2> 상자 빼기 <3> : ");

        scanf("%d", &select);

        

        switch(select)

        {

        case 1:

            if(top == 5)

            {

                printf("상자를 이상 쌓을 없음\n");

                

            }

            else

            {

                stack[top]=boxName++;

                printf(" %c 11상자가 쌓임\n", stack[top]);

                top ++;

            }

            break;

        case 2:

            if(top == 0)

            {

                printf("쌓여있는 상자가 없음.\n");

                

            }

            else

            {

                top --;

                printf(" %c 상자를 \n", stack[top]);

                stack[top] =' ';

                

            }

            break;

            

        case 3:

            printf("현재 상자 %d개가 쌓여 있음 \n", top);

            printf("프로그램을 종료합니다.\n");

            break;

            

        default :

            printf("입력 오류 다시 입력해 주세요\n");

        }

    }

}



소스는 위와 같습니다. 

해당 소스를 실행해 보면 다음과 같은 결과를 얻을 수 있습니다.



배열을 이용한 스택의 구현이 이렇게 됬습니다.

어때요 참 쉽죠??




이 포스팅은 한빛아카데미의 C언어 for Beginner의 예제를 이용하였으며, 한빛아카데미의 지원으로 작성되었습니다.




  

댓글