스택 기초 (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을 줄여준다.
댓글 없음:
댓글 쓰기