#include<stdio.h>
#include<stdlib.h>
#define MAX_STACK_SIZE 10
typedef int element;
typedef struct
{ element stack[MAX_STACK_SIZE];
int top;
} StackType;
void init(StackType *s); // 스택 초기화 함수
int is_empty(StackType *s); // 공백 상태 검출 함수
int is_full(StackType *s); // 포화 상태 검출 함수
void push(StackType *s, element item); // 삽입함수
element pop(StackType *s); // 삭제함수
element peek(StackType *s); // 피크함수
int main()
{
StackType *a;
element first=1;
printf("1\n");
init();
printf("2\n");
push(a, first);
printf("3\n");
peek(a);
printf("4\n");
4/2-3/4+3*2
42/34/-32*+
pop(a);
printf("5\n");
is_full(a);
printf("6\n");
is_empty(a);
printf("7\n");
return 0;
}
// 스택 초기화 함수
void init(StackType *s)
{ s->top = -1; };
// 공백 상태 검출 함수
int is_empty(StackType *s)
{ return (s->top == -1); };
// 포화 상태 검출 함수
int is_full(StackType *s)
{ return (s->top == (MAX_STACK_SIZE-1)); };
// 삽입함수
void push(StackType *s, element item)
{ if( is_full(s) )
{ fprintf(stderr,"스택 포화 에러\n");
return;
}
else
s->stack[++(s->top)] = item;
};
// 삭제함수
element pop(StackType *s)
{ if( is_empty(s) )
{
fprintf(stderr, "스택 공백 에러\n");
exit(1);
}
else
return s->stack[(s->top)--];
};
// 피크함수
element peek(StackType *s)
{
if( is_empty(s) )
{ fprintf(stderr, "스택 공백 에러\n");
exit(1);
}
else
return s->stack[s->top];
};