반응형
스택 큐 짬뽕 플그램 |
스택 에 오버플로우 발생시 큐에 스택 내용저장하는 프로그램 소스 ---------------------------------------------------------------------------------- #include <stdio.h> #include <conio.h> int stack[10]; int top; int queue[10]; int front, rear; void init_stack(); void push(int vall); void pop(); void print_stack(); void init_queue(); int get(); int put(int put_num); void print_queue(); void send_queue(); // 스택 void init_stack() { top = -1; } void push(int vall) { if(top >= 9) { printf("\n 스택이 찼습니다. 큐로 바꾸어 저장하겠습니다.\n"); send_queue(); } else { stack[++top] = vall; printf("스택에 저장한 숫자 : %d\n", vall); } } void pop() { if(top < 0) { printf(" 스택비움\n"); } else { --top; } } void print_stack() { int i; printf(" 스택 top -------------------- buttom\n"); for(i = top; i>=0;i--) { printf("%d ", stack[i]); } printf("\n"); } void send_queue() { // 스택에서 뽑아서 큐에 저장 int i; printf("스택 Data -> 큐 로 이동\n"); for(i=top;i>=0;i--) { int flag = put(stack[i]); if(flag == 0) break; } printf("스택 Data 큐에 저장완료\n"); } // 큐 void init_queue() { front = rear = 0; } int get() { int get_num; if(front > 9) { printf("언더플로우 발생\n"); get_num = -1; } else { get_num = queue[front++]; } return get_num; } int put(int put_num) { int flag = 1; if(rear > 9) { printf("오버플로우발생\n"); flag = 0; } else { queue[rear++] = put_num; } return flag; } void print_queue() { int i; printf("큐 first ----------- last \n"); for(i = front; i < rear; i++) { printf("%d ", queue[i]); } putch('\n'); } void main() { int select_num; int push_num; int exit_flag = 0; printf("스택과 큐를 통합한 프로그램\n"); init_stack(); // 스택초기화 init_queue(); // 큐초기화 while(1) { printf(" 1) push 2)pop 3)stack data print 4)stack&queue data print 5)Quit! \n"); printf("숫자를 선택해 주세요 : " ); scanf("%d",&select_num); if(select_num > 4) break; else { switch(select_num) { case 1 : printf("푸쉬 숫자를 입력해주세요 => "); scanf("%d", &push_num); push(push_num); printf("푸쉬 실행\n"); break; case 2: pop(); printf("팝 실행\n"); break; case 3: print_stack(); break; case 4: print_stack(); print_queue(); break; } } } printf("프로그램을 종료합니다.\n"); getch(); } |
반응형