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

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日

悬赏问题

  • ¥30 电脑误删了手机的照片怎么恢复?
  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计
  • ¥15 来一个cc穿盾脚本开发者
  • ¥15 CST2023安装报错
  • ¥15 使用diffusionbert生成文字 结果是PAD和UNK怎么办
  • ¥15 有人懂怎么做大模型的客服系统吗?卡住了卡住了
  • ¥20 firefly-rk3399上启动卡住了