栈的初始化、压栈、弹栈等基本操作的实现c++
时间: 2024-05-13 16:19:44 浏览: 76
栈是一种线性结构,它的特点是“先进后出”(Last In First Out,LIFO)。栈的基本操作有初始化、压栈、弹栈等。
下面是C++中栈的基本操作的实现:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 栈的最大容量
template<typename T>
class Stack {
public:
Stack() : top(-1) {}
bool isEmpty() const { return top == -1; }
bool isFull() const { return top == MAXSIZE - 1; }
void push(T x) {
if (isFull()) {
cout << "Stack overflow." << endl;
return;
}
data[++top] = x;
}
T pop() {
if (isEmpty()) {
cout << "Stack underflow." << endl;
return T();
}
return data[top--];
}
private:
T data[MAXSIZE];
int top;
};
int main() {
Stack<int> s;
s.push(1);
s.push(2);
s.push(3);
while (!s.isEmpty())
cout << s.pop() << endl;
return 0;
}
```
在这个例子中,我们使用了一个类模板 `Stack<T>`,其中 `T` 表示栈中元素的类型。栈的最大容量为 `MAXSIZE`,我们采用数组来存储栈中的元素。栈的顶部元素的下标为 `top`,初始值为 -1。在 `push` 操作中,如果栈已满,则输出错误信息;否则,将新元素存储到 `data` 数组中,同时 `top` 的值加1。在 `pop` 操作中,如果栈为空,则输出错误信息并返回一个默认的值(例如,对于整型元素,返回0);否则,直接返回栈顶元素,并将 `top` 的值减1。
在 `main` 函数中,我们首先创建了一个整型栈 `s`,然后依次将元素1、2、3压入栈中,最后依次弹出栈中的所有元素并输出。
阅读全文