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日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵