스택(Stack)은 톱(Top)이라 불리는 한쪽 끝에서 모든 입력, 출력이 이루어지는 순서 리스트입니다. 먼저 들어간 데이터가 가장 나중에 나오기 때문에, 후입선출(LIFO, Last In First Out) 리스트라고도 합니다.
true
를 반환함. 아닐 경우, false
를 반환함.true
를 반환함. 아닐 경우, false
를 반환함.typedef struct IntStack* IntStackP;
typedef struct IntStack{
int Elements[100];
int Top;
} IntStack;
int Pop(IntStackP Stack) {
if (IsEmpty(Stack) == True)
Error(1);
return Stack->Elements[(Stack->Top)--];
}
void Push(IntStackP Stack, int Element) {
if (IsFull(Stack) == True)
Error(0);
Stack->Elements[(Stack->Top)++] = Element;
}
int IsEmpty(IntStackP Stack) {
return Stack->Top == -1? True : False;
}
int IsFull(IntStackP Stack) {
return Stack->Top == 100? True : False;
}
int Peek(IntStackP Stack) {
if (IsEmpty(Stack) == True)
Error(1);
return Stack->Elements[Stack->Top];
}
IntStackP Init() {
IntStackP Temp;
Temp = malloc(sizeof(IntStack));
Temp->Top = -1;
return Temp;
}
void Error(int Code) {
char* ErrCause[3] = { "스택이 꽉 참", "스택이 비어 있음", "기타 오류" };
printf("다음과 같은 오류가 발생하여 프로그램을 종료합니다: %s", ErrCause[Code]);
exit(-1);
}