|
만들기 나름이예요.
C언어의 배열은 0부터 시작하죠?
int stack[MAX_STACK_SIZE];
int stackPointer = -1;
void push(int datum)
{
if (stackPointer < MAX_STACK_SIZE - 1) stack[++stackPointer] = datum;
else printf("Stack over flow\n");
}
int pop()
{
if (stackPointer >= 0) return stack[stackPointer--];
printf("Stack under flow\n");
return 0;
}
이렇게 스택에 자료를 넣는 push와 꺼내는 pop을 구현했다면,
-1 은 stack empty 를 의미하게 되고
stackPointer(top)은 항상 제일 마지막 자료를 가리키게 되죠.
만약 0이 stack empty를 의미하게 만든다면, stackPointer는 새로운 녀석이 들어올 빈 곳을
가리키게 되죠. 다음처럼.
int stack[MAX_STACK_SIZE];
int stackPointer = 0;
void push(int datum)
{
if (stackPointer < MAX_STACK_SIZE) stack[stackPointer++] = datum;
else printf("Stack over flow\n");
}
int pop()
{
if (stackPointer > 0) return stack[--stackPointer];
printf("Stack under flow\n");
return 0;
}
|