1

これがpop()関数です。スタックの要素をポップするように書いています。ここまでで、要素をスタックにプッシュしてスタックを表示することに成功しました。だから、私のpop()機能はどこかで間違っていると思います。ここに私のポップ関数があります:

void pop(int newstack[], int *newtop, int bound )
{
    int item;
    if(*newtop<0)
        printf("\n CAUTION!!! UNDERFLOW");
    else
    {
        item=newstack[*newtop];
        *newtop--;
        printf("\n Element popped->%d",item);
    }
}

チャンスを逃さず、show()関数も投稿しています:

void show_stack(int newstack[], int *top)
{
    int i;
    printf("\n");
    for(i=0;i<=*top;i++)
        printf("%d",newstack[i]);
}     

show関数にエラーはないと思います。

4

2 に答える 2

5

*逆参照/間接演算子は、後置デクリメント演算子よりも優先順位が低くなります--。あなたの声明

*newtop--;

として解析されます

*(newtop--);

また、 の値newtop--は の現在の値であるnewtopため、ステートメントはまったく何も達成しません。を逆参照newtopし、逆参照された値で何もしません。

実際には次のようなものが必要です。

*newtop = *newtop - 1;

また

(*newtop)--;

のような式の詳細については、この回答を参照してください*newtop--

于 2013-09-12T08:41:56.153 に答える
2

*newtop--;おそらく間違っている

使用する:

(*newtop)--;

これを見る

于 2013-09-12T08:37:04.327 に答える