자료 저장소

# 배열을 이용한 스택

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));

}
댓글 로드 중…

최근에 게시된 글