📅  最后修改于: 2023-12-03 15:26:20.071000             🧑  作者: Mango
堆栈(Stack)是一种特殊的线性数据结构,它只能在一端进行插入和删除操作,该端称作栈顶。当数据从某一端插入栈中时,称作进栈(push);当数据从栈中删除时,称作出栈(pop)。
堆栈在编程中有广泛的应用,比如计算器中利用堆栈实现表达式的求值,回溯算法中使用堆栈维护已经选择的分支等。
要显示堆栈,首先需要定义一个栈类,然后重载输出运算符。
#include <iostream>
#include <stack>
using namespace std;
template<typename T>
class Stack : public stack<T>
{
public:
void display()
{
if (this->empty())
return;
int len = this->size();
for (int i = 0; i < len; ++i)
{
cout << this->top() << " ";
this->pop();
}
cout << endl;
}
};
int main()
{
Stack<int> s;
s.push(1);
s.push(2);
s.push(3);
s.display();
return 0;
}
以上代码会输出栈的所有元素,该方法会弹出栈的所有元素。如果不想弹出,可以采用另一种方式。
template<typename T>
class Stack : public stack<T>
{
public:
void display()
{
if (this->empty())
return;
int len = this->size();
Stack<T> tmp;
for (int i = 0; i < len; ++i)
{
cout << this->top() << " ";
tmp.push(this->top());
this->pop();
}
cout << endl;
for (int i = 0; i < len; ++i)
{
this->push(tmp.top());
tmp.pop();
}
}
};
以上代码不会破坏原有的栈的内容。