0

私はJAVA n00bです。Java でスタック データ構造を実装しようとしています。プッシュ、ピーク、表示のアルゴリズムは正常に機能しています。popアルゴリズムが期待どおりに機能していません:

public int pop() {
    int temp;
    if(isEmpty())
        return -1;
    else {
        temp = arr[topElem];
        topElem--; // points to the top most element in the stack
        count--;   // keeps track of the total number of elements in the stack
        return temp;
    }
}

このアルゴリズムのcaseinswitchステートメントは次のとおりです。

case 2:
    if(st.pop()==-1)
        System.out.println("The stack is empty.");
    else
        System.out.printf("The element popped is %d\n",st.pop());
    break;

入力された要素が (この順序で) ある場合:- 1 2 4 次に、 への最初の呼び出しpopで 2 がポップされ、1 だけがスタックに残ります。何が問題なのかは理解できますが、コードで特定できません。

4

2 に答える 2

3

pop問題は、 2 回 ( で 1 回、st.pop() == -1で 1回)呼び出していることですprintf

コードを次のように変更する必要があります。

int value = st.pop();
if (value == -1)
   System.out.println("The stack is empty.");
else
   System.out.printf("The element popped is %d\n", value);
于 2013-10-28T15:28:52.133 に答える
0

pop を 2 回呼び出しています。

最初は:

if(st.pop()==-1)
       System.out.println("The stack is empty.");

2番目は次のとおりです。

System.out.printf("The element popped is %d\n",st.pop());

変数を使用して値を格納し、変数のst.pop()値を確認できます。次にロジックコードを書きます。

于 2013-10-28T15:46:45.180 に答える