定义顺序存储栈的接口,将seq_stack.h提交到这里
时间: 2024-10-14 16:07:07 浏览: 30
在C++中,我们可以定义一个简单的顺序存储栈(也称为线性表)的接口,通常会包含一些基本操作,如压入元素、弹出元素、查看栈顶元素以及判断是否为空等。假设我们叫这个栈为`SeqStack`,以下是可能的`seq_stack.h`文件内容:
```cpp
// seq_stack.h
#ifndef SEQ_STACK_H
#define SEQ_STACK_H
#include <iostream>
template<typename T>
class SeqStack {
public:
// 构造函数
SeqStack() : top_(0), capacity_(0) {}
// 检查栈是否为空
bool isEmpty() const { return top_ == 0; }
// 返回栈顶元素,但不弹出
T peek() const {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
return data_[top_ - 1];
}
// 向栈顶压入元素
void push(const T& value) {
if (isFull()) {
throw std::runtime_error("Stack is full");
}
data_[top_] = value;
++top_;
}
// 弹出并返回栈顶元素
T pop() {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
T result = data_[top_ - 1];
data_[top_ - 1] = T();
--top_;
return result;
}
// 判断栈是否已满
bool isFull() const {
return top_ == capacity_;
}
private:
T* data_; // 序列化存储栈的底层数据
size_t top_; // 栈顶指针
size_t capacity_; // 栈的最大容量
// 禁止复制构造和赋值运算符
SeqStack(const SeqStack&) = delete;
SeqStack& operator=(const SeqStack&) = delete;
};
#endif //SEQ_STACK_H
```
阅读全文