스택(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);
}