
TOP을 지하1층(?)으로 깔아서 초기화시키는 역활을 합니다.
void push( int val1 )
{
if( top >= 9 )
printf("n######## 스택이 꽉 차버렸네요 ########n");
else
stack[++top] = val1;
}
아직 여유공간이 있는 경우엔 입력받은 값를 인수로 받아 스택(배열)에 입력시키는 역활을 하는 함수입니다. ++top이기에 TOP을 한층 올린 뒤, 그 위치에 입력받은 값을 집어넣습니다.
void pop()
{
if( top < 0 )
printf(" ########## 더이상 비울 스택이 없습니다 ###########n");
else
--top;
}
TOP을 한칸 내리면 ( --top; ) 가장 위에 있던 자료는 무용지물이 되는 것이죠. 다음에 PUSH를 하더라도 덮어버리기 때문에 삭제라고 보셔도 무방합니다. 위의 개념도에서 3번째 그림을 보시면 한칸 내려와 있는 TOP을 보실 수 있습니다.
void print_stack()
{
int i;
printf("스택 top --------------------- buttomn");
for( i = top ; i >= 0 ; i-- )
printf("%d ", stack[i] );
printf("n");
}
지금까지 쌓인 스택들을 출력하는 함수입니다. 바닥부터 차곡차곡 순서대로 출력됩니다.
void main()
{
printf(" 배열을 이용한 스택 프로그램 입니다 n");
int select_num;
int push_num;
int exit_flag = 0;
init_stack();
while( 1 )
{
printf(" 1) push 2) pop 3) data print 4) Quit! n" );
printf(" 숫자를 선택해주세요 : "); scanf("%d", &select_num );
if( select_num > 3 )
break;
else{
switch( select_num )
{
case 1 :
printf("푸쉬 숫자를 입력해주세요 => "); scanf("%d", &push_num );
push( push_num );
printf("푸쉬(push)를 실행 했습니다n");
break;
case 2 :
pop();
printf("팝(pop)을 실행 했습니다n");
break;
case 3 :
print_stack();
break;
}
}
}
printf("프로그램을 종료합니다n");
getch();
}
엔진입니다.