✨컴공주✨ [1052682] · MS 2021 · 쪽지

2022-07-02 16:18:17
조회수 153

컴공 일기103

게시글 주소: https://orbi.kr/00057410624

"Stack"이라는 자료구조를 배열로 구현한 예제입니다.


#include <stdio.h>

#include <stdlib.h>


typedef struct tagNode

{

    int Data;

}Node;


typedef struct tagArrayStack

{

    int Capacity;

    int Top;

    Node* Nodes;

} ArrayStack;


void AS_CreatStack(ArrayStack** Stack, int Capacity)

{

    (*Stack) = (ArrayStack*)malloc(sizeof(ArrayStack));

    (*Stack)->Nodes = (Node*)malloc(sizeof(Node) * Capacity);


    (*Stack)->Capacity = Capacity;

    (*Stack)->Top = 0;

    

}


void AS_DestroyStack(ArrayStack* Stack)

{

    free(Stack->Nodes);

    free(Stack);

}


void AS_Push(ArrayStack* Stack, int Data)

{

    int Position = Stack->Top;


    Stack->Nodes[Position].Data = Data;

    Stack->Top++;

}


int AS_Pop(ArrayStack* Stack)

{

    int Position = --(Stack->Top);

    return Stack->Nodes[Position].Data;

}


int AS_Top(ArrayStack* Stack)

{

    int Position = Stack->Top - 1;

    return Stack->Nodes[Position].Data;

}


int AS_GetSize(ArrayStack* Stack)

{

    return Stack->Top;

}


bool AS_IsEmpty(ArrayStack* Stack)

{

    return (Stack->Top == 0);

}


int main()

{

    int i = 0;

    ArrayStack* Stack = NULL;


    AS_CreatStack(&Stack, 10);


    AS_Push(Stack, 3);

    AS_Push(Stack, 37);

    AS_Push(Stack, 11);

    AS_Push(Stack, 12);


    printf("Capacity : %d, Size : %d, Top: %d\n\n", Stack->Capacity, AS_GetSize(Stack), AS_Top(Stack));


    for (i = 0; i < 4; i++)

    {

        if (AS_IsEmpty(Stack))

        {

            break;

        }


        printf("Popped : %d, ", AS_Pop(Stack));


        if (!AS_IsEmpty(Stack))

            printf("Current Top : %d\n", AS_Top(Stack));


        else

            printf("Stack is Empty.\n");

    }


    AS_DestroyStack(Stack);


    return 0;

}


[실행결과]

Capacity : 10, Size : 4, Top: 12


Popped : 12, Current Top : 11

Popped : 11, Current Top : 37

Popped : 37, Current Top : 3

Popped : 3, Stack is Empty.

0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.