lbcjbcgn 2022-10-07 15:09 采纳率: 60%
浏览 84
已结题

c++栈的类模板,提供栈结构数据操作

以下是一个整数栈类的定义:
const int SIZE=100;
class Stack
{
public:
Stack();
~Stack();
void Push(int n);
int Pop();
private:
int stack[SIZE];
int top;
};
编写一个栈的类模板(包括其成员函数定义),以便为任何类型的对象提供栈结构数据操作。并在主函数中测试创建整数栈、字符栈和浮点数栈,并提供一些数据展示入栈、出栈和打印操作。

  • 写回答

2条回答 默认 最新

  • _GX_ 2022-10-07 15:40
    关注
    #include <iostream>
    #include <stdexcept>
    
    const int SIZE = 100;
    
    template <typename T>
    class Stack
    {
    public:
        Stack() : top(0) {}
        ~Stack() {}
    
        void Push(int n)
        {
            if (top == SIZE)
                throw std::runtime_error("stack is full");
            stack[top++] = n;
        }
    
        int Pop()
        {
            if (top == 0)
                std::runtime_error("stack is empty");
            return stack[--top];
        }
    
        void Print()
        {
            for (int i = 0; i < top; i++)
                std::cout << stack[i] << " ";
            std::cout << '\n';
        }
    
    private:
        T stack[SIZE];
        int top;
    };
    
    template <typename T>
    void test_stack()
    {
        std::cout << "test for " << typeid(T).name() << '\n';
        Stack<T> si;
        for (int i = 'a'; i <= 'd'; i++)
            si.Push(i);
        si.Print();
        si.Pop();
        si.Print();
    }
    
    int main()
    {
        try
        {
            test_stack<int>();
            test_stack<char>();
            test_stack<float>();
        }
        catch (const std::exception &e)
        {
            std::cerr << e.what();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月7日
  • 已采纳回答 10月7日
  • 创建了问题 10月7日

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置