C++における配列を使用したスタックの実装方法


まず、スタックの要素の型を指定します。例えば、整数を格納するスタックを考えましょう。

const int MAX_SIZE = 1000; // スタックの最大サイズ
class Stack {
private:
    int arr[MAX_SIZE]; // スタックを格納する配列
    int top; // スタックのトップ要素のインデックス
public:
    Stack() {
        top = -1; // スタックが空の場合、トップのインデックスを-1とします
    }
    bool isEmpty() {
        return (top == -1); // スタックが空かどうかを判定します
    }
    bool isFull() {
        return (top == MAX_SIZE - 1); // スタックが満杯かどうかを判定します
    }
    void push(int element) {
        if (isFull()) {
            cout << "スタックが満杯です。要素を追加できません。" << endl;
            return;
        }
        arr[++top] = element; // 要素をスタックに追加します
        cout << element << " をスタックに追加しました。" << endl;
    }
    void pop() {
        if (isEmpty()) {
            cout << "スタックが空です。要素を取り出すことができません。" << endl;
            return;
        }
        int poppedElement = arr[top--]; // スタックから要素を取り出します
        cout << poppedElement << " をスタックから取り出しました。" << endl;
    }
    int peek() {
        if (isEmpty()) {
            cout << "スタックが空です。" << endl;
            return -1;
        }
        return arr[top]; // スタックのトップ要素を返します
    }
};
int main() {
    Stack stack;
    stack.push(10);
    stack.push(20);
    stack.push(30);
    stack.pop();
    cout << stack.peek() << " がスタックのトップ要素です。" << endl;
    return 0;
}

上記の例では、Stackクラスを定義し、arr配列を使用してスタックを実装しています。push関数はスタックに要素を追加し、pop関数はスタックから要素を取り出します。isEmpty関数とisFull関数は、スタックが空か満杯かを判定します。peek関数は、スタックのトップ要素を返します。

上記のコードは、C++で配列を使用してスタックを実装する基本的な例です。さまざまな操作を行うために、さらに追加のメソッドを実装することもできます。また、C++の標準ライブラリであるstd::stackを使用することもできます。この場合、配列の実装の詳細を意識する必要はありません。

以上が、C++で配列を使用してスタックを実装する方法についての解説です。これらのコード例と説明を使用して、約1000語のブログ投稿を作成することができます。