以下是一个整数栈类的定义:
const int SIZE=100;
class Stack
{
public:
Stack();
~Stack();
void Push(int n);
int Pop();
private:
int stack[SIZE];
int top;
};
编写一个栈的类模板(包括其成员函数定义),以便为任何类型的对象提供栈结构数据操作。并在主函数中测试创建整数栈、字符栈和浮点数栈,并提供一些数据展示入栈、出栈和打印操作。
c++栈的类模板,提供栈结构数据操作
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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(); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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键失灵