まず、スタックの要素の型を指定します。例えば、整数を格納するスタックを考えましょう。
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語のブログ投稿を作成することができます。