# 배열을 이용한 스택ArrayStack.cpp
Is_empty
| 스택이 비어있는지 검사한다 |
Is_full
| 스택이 가득찼는가를 검사한다 |
Push
| 스택의 맨 위에 요소를 추가한다 |
Pop
| 스택의 맨 위에 있는 요소를 삭제한다 |
Peek
| 스택의 맨 위에 있는 요소를 삭제하지 않고 반환한다 |
#include <stdio.h>
#define MAX_SIZE 100
typedefstruct STACK
{
int data[MAX_SIZE];
int top;
}STACK;
void Init(STACK *p)
{
p->top=-1;
}
int Is_empty(STACK *p)
{
return (p->top == -1);
}
int Is_full(STACK *p)
{
return (p->top == (MAX_SIZE-1));
}
void Push(STACK *p,int data)
{
if(Is_full(p))
{
printf("스택이 꽉찼습니다\n"); return ;
}
else
{
p->top++;
p->data[p->top]=data;
}
}
int Pop(STACK *p)
{
if(Is_empty(p))
{
printf("스택이 비어있습니다\n");
return -1;
}
return p->data[(p->top)--];
}
int Peek(STACK *p)
{
if(Is_empty(p))
{
printf("스택이 비어있습니다\n");
return -1;
}
return p->data[p->top];
}
int main()
{
STACK s;
int i;
Init(&s);
printf("현재 스택의 공간 비어있는가? %c\n",(Is_empty(&s) ? 'Y' : 'N'));
for(i=0;i<10;i++)
{
printf("Push : %d\n",i);
Push(&s,i);
}
for(i=0;i<10;i++)
printf("Pop : %d\n",Pop(&s));
printf("현재 top의 위치는? %d\n",Peek(&s));
}