#include <stdio.h>
#include <Windows.h>
int stacktop=0;
int stack[10];
void PUSH();//데이터입력함수
void POP();//데이터제거함수
void PRINT();//출력함수
void main (){
int cmd;
while (1)//무한루프를돌림
{
printf("1. PUSH\n2. POP\n3. Print Stack\n4. Exit\n\n\n");
printf("원하는 작업 : ");
scanf("%d", &cmd);
if(cmd==1) //커맨드숫자에따른 함수실행
{
PUSH();
}
else if(cmd==2)
{
POP();
}
else if(cmd==3)
{
PRINT();
}
else if(cmd==4)
{
break;
}
}
}
void PUSH(){
int n;
if(stacktop<10){
printf("PUSH\n");
printf("넣을 데이터 : ");
scanf("%d", &n);
stack[stacktop]=n;//배열에숫자실행
stacktop++;//인덱스값증가
printf("%d의 데이터가 들어갔습니다.", n);
Sleep(2000);
}
else if(stacktop>=10){
printf("더이상 데이터를 넣을수 없습니다."); // 스택에 지정된공간할당이 종료됫을때 안내문구
Sleep(2000);
}
system("cls");
}
void POP(){
printf("POP");
printf("데이터를 자동으로 제거합니다");
stacktop-=1; //데이터를넣고 +1햇으므로 -1한후 0을입력
stack[stacktop]=0;
Sleep(2000);
system("cls");
}
void PRINT(){
int i;
printf("데이터를 출력합니다.\n");
for(i=0;i<stacktop;i++){ //top까지 출력
printf("%3d ", stack[i]);
}
Sleep(2000);
system("cls");
}
제가 보기엔 POP과정에서 값을 먼저 빼고 top을 내리는 것이 맞는 것 같습니다만...
답글삭제