0

ポインターのプッシュとポップ全体がどのように機能するかを理解するのに苦労しています。私のプログラムでは、ユーザーは空 (NULL) のスタックを作成することになっています。これにより、ユーザーはスタックに数字をプッシュするか、プッシュされた数字をポップするかを選択できます。また、スタックの数と格納されているものをカウントすることになっていますが、プッシュとポップがどのように記述されるべきかを理解すれば、それを理解できると思います。それらの背後にある概念を理解しています。どのように書かれるべきかわかりません。誰かがこれを理解するのを手伝ってください。私は家庭教師に行きましたが、彼は記憶をリフレッシュする必要があり、別の日に戻ってくるように私に言いました. 私はそうしますが、それに頼ることはできません。

4

1 に答える 1

0

これが私の実装ですpop。に対して何をする必要があるかは、この例から明らかですpushこれが最も費用対効果の高い方法であるとは言えません。

template <class T>
T SimpleStack<T>::popOff()
{
    T popped = *(aptr + --arraySize); //aptr points to the existing stack
    int tSize = arraySize;            //arraySize is a member holding the size

    T *temp = new T[tSize];           //Temp holder for the elements that stay 
                                      //on the stack
    for(int i = 0; i < tSize; ++i)
    {
        *(temp+i) = *(aptr+i);        //Fill the temp holder with the original 
                                      //stack - popped
    }
    delete [] aptr;                   //Get rid of the old stack
    aptr = new T [tSize];             //Create a new stack with the new size
    for(int i = 0; i < arraySize; ++i)
    {
        *(aptr+i) = *(temp+i);        //Fill the new stack with the kept values
    }
    delete [] temp;                   //Get rid of the temp holder
    return popped;                    //Send the popped number back
}

エミュレートしようとしているスタックやカスタム コンテナが何であるか、どのように使用され、どこに最適なのかを調べないと、おそらく苦労するという事実は依然として残っています。

于 2013-02-10T00:01:39.707 に答える