- #include
- #define MAX 128
- using namespace std;
-
- template <typename T>
- class Stack
- {
- private:
- T *p = new T[MAX];//存放数据的数组
- int top;//记录下标位置
-
- public:
- //构造函数
- Stack()
- {
- top = -1;
- cout<<"无参构造函数"<
- }
- //析构函数
- ~Stack()
- {
- cout<<"Stack::析构函数"<
- }
- //拷贝构造函数
- Stack(const Stack &other):p(new T[MAX]),top(other.top)
- {
- cout<<"拷贝构造函数"<
- }
- //入栈
- bool stack_push(T e);
- //出栈
- bool stack_pop();
- //清空栈
- void stack_free();
- //判空
- int stack_empty();
- //判满
- int stack_full();
- //获取栈顶元素
- T stack_top();
- //栈的大小
- int stack_size();
- };
-
- //栈的大小
- template <typename T>
- int Stack
::stack_size() - {
- cout<<"栈的大小为 "<
1< - return top+1;
- }
-
- //获取栈顶元素
- template <typename T>
- T Stack
::stack_top() - {
- if(stack_empty())
- {
- cout<<"获取失败"<
- return -1;
- }
- cout<<"栈顶元素为 "<
- return p[top];
- }
-
- //判满
- template <typename T>
- int Stack
::stack_full() - {
- return top == MAX-1;
-
- }
- //判空
- template <typename T>
- int Stack
::stack_empty() - {
- return top == -1;
- }
- //清空栈
- template <typename T>
- void Stack
::stack_free() - {
- while(top != -1)
- {
- stack_pop();
- }
- cout<<"清空成功"<
- }
-
-
- //出栈
- template <typename T>
- bool Stack
::stack_pop() - {
- if(stack_empty())
- {
- return false;
- }
- T e = p[top];
-
- top--;
- cout<
" 出栈成功"< -
- return true;
- }
-
-
- //入栈
- template <typename T>
- bool Stack
::stack_push(T e) - {
- if(stack_full())
- {
- cout<<"入栈失败"<
- return false;
- }
- top++;
- p[top] = e;
- cout<
" 入栈成功"< -
- return true;
- }
- int main()
- {
- Stack<int> s1;
- s1.stack_push(4);
- Stack<int> s3 = s1;
- s3.stack_pop();
- s3.stack_size();
- s1.stack_pop();
- Stack
s2; - s2.stack_push("hello");
- s2.stack_pop();
-
- return 0;
- }

模板类封装队列
- #include
- #define MAX 128
- using namespace std;
- template<typename T>
- class Queue_q
- {
- private:
- T *p=new T[MAX];//队列的数组
- int tail;//记录队尾元素
- int head;//记录对头元素
- public:
- //构造函数
- Queue_q(int t=0)
- {
- head=t;
- tail=t;
- cout<<"无参构造函数"<
- }
- //析构函数
- ~Queue_q()
- {
- cout<<"Stack::析构函数"<
- }
- //拷贝构造函数
- Queue_q(const Queue_q &other):p(new T[MAX]),tail(other.tail),head(other.head)
- {
- cout<<"拷贝构造函数"<
- }
- //入队
- int queue_push(T e);
- //出队
- int queue_pop();
- //清空队列
- int queue_delete();
- //判空
- bool queue_empty();
- //判满
- bool queue_full();
- //队列的大小
- void queue_getsize();
- void show(int i)
- {
- cout<
" ";
- }
- };
- //入队
- template<typename T>
- int Queue_q
::queue_push(T e) - {
- if(queue_full())
- {
- cout<<"入队失败"<
- return -1;
- }
- p[tail]=e;
- tail=(tail+1)%MAX;
- cout<<"入队成功"<
- return 0;
- }
- //出队
- template<typename T>
- int Queue_q
::queue_pop() - {
- if(queue_empty())
- {
- cout<<"出队失败"<
- return -1;
- }
- T e=p[head];
- head=(head+1)%MAX;
- cout<
" 出队成功"< - return 0;
- }
- //清空队列
- template<typename T>
- int Queue_q
::queue_delete() - {
- while(head!=tail)
- {
- queue_pop();
- }
- delete [] p;
- p=nullptr;
- cout<<"清空队列成功"<
- return 0;
- }
- //判空
- template<typename T>
- bool Queue_q
::queue_empty() - {
- if(head==tail)
- {
- cout<<"队列空"<
- return 1;
- }
- return 0;
- }
- //判满
- template<typename T>
- bool Queue_q
::queue_full() - {
- if((tail+1)==0)
- {
- cout<<"队列满了"<
- return 1;
- }
- return 0;
- }
- //队列的大小
- template<typename T>
- void Queue_q
::queue_getsize() - {
- int size;
- size=(tail-head+MAX)%MAX;
- cout<<"队的大小为:"<
- }
- int main()
- {
- //实例一个double类型的队列
- Queue_q<double> q1;
- double e;
- int s;
- q1.queue_empty();
- cout<<"请输入要入队的个数:";
- cin>>s;
- for(int i=0;i
- {
- cout<<"请输入要入队的元素:";
- cin>>e;
- q1.queue_push(e);
- }
- q1.queue_getsize();
- for(int i=0;i
- {
- q1.show(i);
- }
- cout<
- q1.queue_delete();
- //实例一个string类型的队列
- Queue_q
q2; - string e1;
- int s2;
- q2.queue_empty();
- cout<<"请输入要入队的个数:";
- cin>>s2;
- for(int j=0;j
- {
- cout<<"请输入要入队的元素:";
- cin>>e1;
- q2.queue_push(e1);
- }
- q2.queue_getsize();
- for(int j=0;j
- {
- q2.show(j);
- }
- cout<
- q2.queue_delete();
- Queue_q
q3 = q2; - return 0;
-
- }


-
相关阅读:
大模型的东风中,看雄安的数字飞翔
基于微信奶茶外卖点餐小程序系统设计与实现 开题报告
围绕“开源+深耕”策略和数字化监控手段,动态管理场景生态价值
什么是 SudoSwap,如何使用 NFT AMM 进行高效交易?
HTML语言的由来与发展历程
C/C++整数的个数 2020年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
增加软件投入的重要性:提升自动化程度与用户界面设计的价值
java计算机毕业设计自驾游网站系统源码+mysql数据库+系统+lw文档+部署
假期AI新闻热点:亚运会Al技术亮点;微软GPT-4V论文精读;Perplexity推出pplx-api;DALL-E 3多渠道测评 | ShowMeAI日报
【开源】使用Python+Flask+Mysql快速开发一个用户增删改查系统
-
原文地址:https://blog.csdn.net/qq_53478460/article/details/132864075