スタックについて
Posted: 2009年5月30日(土) 16:37
データ構造の勉強中で、スタックを以下のように書いてみました。
このプログラムでは1,2,3とSに積んでいるのでしているので3,2,1とポップしてほしいのですが
(1)で出力すると123、(2)で出力すると321と実行結果がなんでか違ってしまいます。
原因がさっぱりわからないのでどなたか教えていただけないでしょうか
#include<stdio.h>
#include<stdlib.h>
#define STACKSIZE 100
typedef struct {
int top;
int data[STACKSIZE];
} stack;
//スタックの初期化
void initstack(stack *s){
s->top = -1;
}
//スタックが空か
int stackempty(stack *s){
return s->top < 0;
}
//スタックにデータをプッシュ
void push(stack *s,int x){
s->top++;
if(s->top >= STACKSIZE){
puts("overflow");
exit(1);}
else
s->data[s->top]=x;
}
//スタックからデータをポップ
int pop(stack *s){
if(s->top<0){
puts("underflow");
exit(1);}
else
return s->data[s->top--];
}
int main(void){
stack S;
initstack(&S);
push(&S,1);
push(&S,2);
push(&S,3);
(1)://printf("%d %d %d",pop(&S),pop(&S),pop(&S)); 出力 1 2 3
(2)/*printf("%d",pop(&S));
printf("%d",pop(&S));
printf("%d",pop(&S));*/
}
このプログラムでは1,2,3とSに積んでいるのでしているので3,2,1とポップしてほしいのですが
(1)で出力すると123、(2)で出力すると321と実行結果がなんでか違ってしまいます。
原因がさっぱりわからないのでどなたか教えていただけないでしょうか