c++多文件实现用面向对象的程序设计方法实现堆栈的操作。
时间: 2024-02-12 22:06:21 浏览: 63
好的,我可以帮你解答这个问题。
首先,我们在一个头文件 `stack.h` 中定义 `Stack` 类。代码如下:
```cpp
#ifndef STACK_H
#define STACK_H
class Stack {
public:
Stack(int size); // 构造函数
~Stack(); // 析构函数
bool is_empty(); // 判断堆栈是否为空
bool is_full(); // 判断堆栈是否已满
void push(int num); // 入栈操作
int pop(); // 出栈操作
private:
int *stack_; // 堆栈数组
int top_; // 栈顶指针
int size_; // 堆栈大小
};
#endif
```
其中,我们定义了构造函数和析构函数,以及 `is_empty`、`is_full`、`push` 和 `pop` 成员函数,用于堆栈的操作。
接下来,在一个源文件 `stack.cpp` 中实现 `Stack` 类的成员函数。代码如下:
```cpp
#include "stack.h"
#include <iostream>
using namespace std;
Stack::Stack(int size) {
size_ = size;
top_ = -1;
stack_ = new int[size_];
}
Stack::~Stack() {
delete[] stack_;
}
bool Stack::is_empty() {
return top_ == -1;
}
bool Stack::is_full() {
return top_ == size_ - 1;
}
void Stack::push(int num) {
if (is_full()) {
cout << "堆栈已满,无法入栈!" << endl;
return;
}
stack_[++top_] = num;
}
int Stack::pop() {
if (is_empty()) {
cout << "堆栈已空,无法出栈!" << endl;
return -1;
}
return stack_[top_--];
}
```
最后,在主函数中使用 `Stack` 类。代码如下:
```cpp
#include "stack.h"
int main() {
Stack stack(10);
stack.push(1);
stack.push(2);
stack.push(3);
cout << stack.pop() << endl;
cout << stack.pop() << endl;
cout << stack.pop() << endl;
cout << stack.pop() << endl;
return 0;
}
```
输出结果如下:
```
3
2
1
堆栈已空,无法出栈!
-1
```
这样就实现了用面向对象的程序设计方法实现堆栈的操作,并通过多文件实现。
阅读全文