프로그래머의 삶 Programmer's Life/C & C++

단순 배열 스택의 예

Oliver's World 2008. 11. 5. 11:14
728x90

#include<stdio.h>
#define MAX 10
int stack[MAX];
int sp=-1;
int push(int);
int pop(void);
int prtstack(void);

void main()
{
 int num,c,p;
 printf("어떤 명령을 하시겠습니까?\ni스택에 저장 o 저장된 데이터 축출\np 지금까지 저장된 데이터 출력, 스페이스 종료.\n");
 while((c=getchar()) != ' ')
 {
  if(c == 'i')
  {
   printf("저장할 데이터를 입력하시오.\n");
   scanf("%d",&num);
   push(num);
  }
  if(c == 'o')
  {
   p=pop();
   if(p==-1)
   {
    printf("저장된 데이터가 존재하지 않습니다.");
   }
   else
   printf("가장 최근에 저장된 데이터를 축출한 값은 %d입니다.\n\n",p);
  }
  if(c == 'p')
  {
   prtstack();
  }
 }
}

int prtstack(void)
{
 int f;
   printf("지금까지 저장된 데이터 : ");
   for(f=0;f<sp+1;f++)
   {
    printf("%2d  ",stack[f]);
   }
   printf("\n");
   return 0;
}

 

int push(int a)
{
 if(sp>=MAX-1)
 {
  return printf("더이상 저장할 공간이 없습니다.\n");
 }
 else
  stack[++sp]=a;
 return 0;
}

int pop(void)
{
 if(sp<0)
 { 
  return -1;
 }
 else
  return stack[sp--];
}

728x90