스텍과 큐는 top, rear, front 변수의 초기값을 -1로 줘야 합니다.
씨언어에서의 배열은 첨자가 0부터 시작하기 때문에 반드시 모든 변수를 -1로 초기화 해줘야 결과값이 바르게 나옵니다.
>#include<stdio.h>
>
>int top;
>int stack[3];
>int Queue[3];
>int data;
>int head=0,tail=0;
>
>push()
>{
> stack[++top] = data;
> return 0;
>}
>
>pop()
>{
> stack[top--] = 0;
> return 0;
>}
>
>stackwrite()
>{
> int i;
> printf("Stack : ");
> for(i=top;i>0;i--)
> printf("%3d",stack[i]);
> return 0;
>}
>
>Q_push()
>{
> Queue[tail++] = data;
> return 0;
>}
>
>Q_pop()
>{
> Queue[head++] = 0;
> return 0;
>}
>
>Q_write()
>{
> int i;
> printf("\nQueue : ");
> for (i=head;i<tail;i++)
> printf("%3d",Queue[i]);
> return 0;
>}
>
>
>void main()
>{
> int ch;
> printf ("**************************************\n");
> printf ("1. add 2. delete 3.exit\n");
> printf ("**************************************\n");
> for(;;)
> {
> printf("\n\nChoose : ");
> scanf ("%d",&ch);
> printf("\n");
> if (ch==1)
> {
> if (top > 2)
> {
> printf("overflow ...\n");
> break;
> }
> printf("Input : ");
> scanf("%3d",&data);
> push();
> Q_push();
> stackwrite();
> Q_write();
> }
> if (ch==2)
> {
> if (top == 0)
> {
> printf("underflow ...\n");
> break;
> }
> pop();
> Q_pop();
> stackwrite();
> Q_write();
> }
> if (ch==3)
> {
> break;
> }
>
> }
>}
>
>
>
댓글 달기