코딩스터디

Stack 배열로 구현 / C

애플앤마블 2019. 5. 7. 18:20
반응형
SMALL

https://book.naver.com/bookdb/book_detail.nhn?bid=6068296

 

C언어로 쉽게 풀어쓴 자료구조

이 책은 도입부에서부터 C언어에서 시행착오를 겪는 자료 구조와 알고리즘에 대한 정의를 그림을 통해 충분히 설명하면서 자바 애플릿으로 작성된 가상 실습 소프트웨어로 개념을 확실히 잡아주고 있다. 더 나아가 유사코드로 작성된 알고리즘을 학습하고 최종적으로 C언어로 구현된 내용을 학습할 수 있도록 구성하고 있어, 자료 구조와 알고리즘의 개념의 이해는 물론이고 C언어로 구현된 내용을 통해 C언어를 쉽게 이해할 수 있다.

book.naver.com

C언어로 쉽게 풀어쓴 자료구조를 참고한 내용입니다.

#include <stdio.h>
#define MAX_STACK_SIZE 100
typedef int element;
typedef struct{
    element stack[MAX_STACK_SIZE];
    int top;
} StackType;

void init(StackType *s)
{
    s->top=-1;
}
int is_empty(StackType *s)
{
    return (s->top == -1);
}

int is_full(StackType *s)
{
    return (s->top == (MAX_STACK_SIZE-1));
}

void push(StackType *s, element item)
{
    if(is_full(s)){
        fprintf(stderr, "STACK FULL ERROR\n");
        return;
    }
    else s->stack[++(s->top)] = item;
}

element pop(StackType *s)
{
    if(is_empty(s)){
        fprintf(stderr, "STACK EMPTY ERROR\n");
        exit(1);
    }
    else return s->stack[(s->top)--];
}

element peek(StackType *s)
{
    if(is_empty(s)){
        fprintf(stderr, "STACK PEEK ERROR");
        exit(1);
    }
    else return s->stack[s->top];
}

void main(){
    StackType s;
    init(&s);
    push(&s, 1);
    push(&s, 2);
    printf("%d\n", pop(&s));
    printf("%d\n", pop(&s));
}

C로 이처럼 Stack을 구현할 수 있지만 C++로 코드할 때는 #include<stack>로 편리하게 사용 가능합니다.

반응형
LIST