post list

2013년 12월 19일

[Data Structure] #2-1 스택 기초 (Stack)


스택 기초 (Stack)

전역변수를 이용해서 스택을 배워보도록 하자. 전역변수로 설정했기 때문에 오직 하나의 Stack만이 생성된다. 또한 오직 하나 뿐이기 때문에 함수들의 매개변수가 필요하지 않게 된다. 코드는 아주 심플하기 때문에 어려운 부분은 별로 없다. 

#include <stdio.h>
#include <stdlib.h>

#define MAX_STACK_SIZE 100

typedef int element;
element stack[MAX_STACK_SIZE];
int top = -1;
//Stack을 전역변수로 설정. 이렇게 하면 오직 하나의 스택만 사용이 가능하다.
//보통 알고리즘을 풀 때 이렇게 한다.

int is_empty(){
    return top == -1;
}

int is_full(){
    return top == MAX_STACK_SIZE-1;
}

void push(element item){
    if (is_full())
        return;
    top++;
    stack[top] = item;
}

element pop(){
    if (is_empty())
        return NULL;
    element p = stack[top];
    top--;
    return p;
}

element peek(){
    if (is_empty())
        return NULL;
    element p = stack[top];
    return p;
}

int main(){
    push(1);
    push(2);
    push(3);
    printf("%d\n",pop());
    printf("%d\n",pop());
    printf("%d\n",pop());
    printf("%d\n", is_empty());
    return 0;
}

 사소하게 기억해야 할 점은 top의 초기값이 -1이라는 것이다. 그래서 push할 때에는 미리 top을 하나 증가 시켜준 뒤에 stack에 값을 넣어줘야 한다. 반대로 pop은 먼저 빼고나서 top을 줄여준다.




댓글 없음:

댓글 쓰기