자료구조 c언어 스택 소스
#include <stdio.h>
#define max 5
typedef struct {
int top;
int stack[max];
}stack_type;
typedef stack_type* stack_type_ptr;
void init(stack_type_ptr s) {
s->top = -1;
}
int is_full(stack_type s) {
if (s.top == max - 1)
return 1;
else
return 0;
}
int is_empty(stack_type s) {
if (s.top == -1)
return 1;
else
return 0;
}
int pop(stack_type_ptr s) {
if (!is_empty(*s)) {
int tmp = s->stack[s->top--];
return tmp;
}
else
printf("스택이 비어 있음");
}
void push(stack_type_ptr s, int item) {
if (!is_full(*s)) {
s->top++;
s->stack[s->top] = item;
}
else
printf("스택이 꽉 참");
}
int peek(stack_type s) {
if (!is_full(s)) {
int tmp = s.stack[s.top];
return tmp;
}
else
printf("스택이 꽉 참");
}
int main(void) {
stack_type st;
init(&st);
push(&st, 10); // 10 ]
push(&st, 11); // 11 10 ]
push(&st, 12); // 12 11 10 ]
printf("[ %d ]", pop(&st)); // 12 <- 11 10 ]
printf("\n[ %d ]", peek(st)); // 11 10 ]
}
