📜  显示堆栈 C++ (1)

📅  最后修改于: 2023-12-03 15:26:20.071000             🧑  作者: Mango

显示堆栈 C++
什么是堆栈?

堆栈(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();
        }
    }
};

以上代码不会破坏原有的栈的内容。