아래 메인 함수가 동작될 수 있도록 스택을 만드시오.
int main() {
Stack s;
create(&s,3);
push(&s, 10);
push(&s, 20);
push(&s, 30);
push(&s, 40);
for (int i = 0 ; i < 3 ; i++)
printf("%d\n", pop(&s) );
pop(&s);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAX_STACK_SIZE 100
typedef int element;
typedef struct {
element data[MAX_STACK_SIZE];
int top;
}Stack;
//스택 생성 함수
void create(Stack* s, int size)
{
s->data[MAX_STACK_SIZE] = size;
s->top = 1;
}
//공백 상태 검출 함수
int is_empty(Stack* s)
{
return (s->top == -1);
}
//포화 상태 검출 함수
int is_full(Stack* s)
{
return (s->top == (MAX_STACK_SIZE - 1));
}
//삽입 함수
void push(Stack* s, element item)
{
if (is_full(s)) {
fprintf(stderr, "스택 포화 에러 \n");
return;
}
else {
s->data[++(s->top)] = item;
}
}
// 삭제 함수
element pop(Stack* s)
{
if (is_empty(s)) {
fprintf(stderr, "스택 공백 에러");
exit(1);
}
else {
return s->data[(s->top)--];
}
}
int main(void)
{
Stack s;
create(&s, 3);
push(&s, 10);
push(&s, 20);
push(&s, 30);
push(&s, 40);
for (int i = 0; i <= 3; i++)
printf("%d\n", pop(&s));
pop(&s);
return 0;
}