#include <stdio.h>
#include <stdbool.h>
#define MAX_STACK_SIZE 100
int stack[MAX_STACK_SIZE];
int top = -1;
int IsEmpty();
int IsFull();
void push(int value);
int pop();
int main(){
push(3);
push(5);
push(12);
printf("%d ",pop());
printf("%d ",pop());
printf("%d ",pop());
return 0;
}
int IsEmpty(){ // (POP 1)스택이 비어있는지 확인
if(top < 0){
return true;
}else{
return false;
}
}
int IsFull(){ // (PUSH 1)스택이 가득 찼는지 확인
if(top >= MAX_STACK_SIZE - 1){
return true;
}else{
return false;
}
}
void push(int value){
if(IsFull() == true){
printf("스택이 가득 찼습니다."); // (PUSH 2)스택이 가득 찼다면 오버플로로우로 인식하고 종료
}else{
stack[++top] = value; // (PUSH 3)스택이 가득 차지 차있지 않다면 top을 증가 시키고
// (PUSH 4)top이 가리키는 스택 위치에 데이터 추가
}
}
int pop(){
if(IsEmpty() == true){
printf("스택이 비었습니다."); // (POP 2)스택이 비어있으면 언더플로우로 인식하고 종료
}else{
return stack[top--]; // (POP 3)비어있지 않으면 top을 가리키는 데이터 제거
// (POP 4)top 감소 및 (POP 5)성공 반환(삭제한 값 반환)
}
}
'자료구조' 카테고리의 다른 글
원형 큐 삽입, 삭제 예시 (학교 과제, p66) (0) | 2024.06.04 |
---|---|
하노이의 탑과 재귀 함수 (학교 과제, p58) (0) | 2024.05.28 |
자료 구조의 분류 (p17) (0) | 2024.04.15 |
C언어 배열과 파이썬 리스트 차이점 (학교 과제, p48) (0) | 2024.04.14 |
[이전 완] 파이썬 배열 코드 예시(학교 과제, p45) (0) | 2024.04.14 |