

- #ifndef ZHAN_H
- #define ZHAN_H
- #include
-
- using namespace std;
-
- template<typename T>
- class Zhan
- {
- private:
- T *zhan;//存放栈中的数据
- int N;//栈空间
- int top;//栈顶
-
- public:
- //构造函数设置空间为10
- Zhan();
-
- //析构函数
- ~Zhan();
-
- Zhan(const Zhan &other);
-
- //清空栈
- void clear();
-
- //是否栈空
- int empty();
-
- //是否栈满
- int full();
-
- //获取栈顶元素
- void top_data();
-
- //进栈
- void into();
-
- //出栈
- int out();
-
- //栈的大小
- void len();
-
- void show();
- };
-
- //选择功能函数
- void choose();
-
-
- #endif // ZHAN_H
- #include"zhan.h"
- //构造函数
- template <typename T>
- Zhan
::Zhan() - {
- N=10;
- zhan=new T[N];//分配栈空间
- this->top=-1;//初始化栈顶
- }
-
- //析构函数
- template <typename T>
- Zhan
::~Zhan() - {
- delete zhan;
- }
-
- //拷贝构造
- template <typename T>
- Zhan
::Zhan(const Zhan &other) - {
- zhan=new T(*other.zhan);
- N=other.N;
- top=other.top;
- }
-
- //清空栈
- template <typename T>
- void Zhan
::clear() - {
- this->top=-1;
- cout<<"清空成功"<
- }
-
- //是否栈空
- template <typename T>
- int Zhan
::empty() - {
- return (this->top==-1)?1:0;
- }
-
- //是否栈满
- template <typename T>
- int Zhan
::full() - {
- return (this->top==N-1)?1:0;
- }
-
- //获取栈顶元素
- template <typename T>
- void Zhan
::top_data() - {
- if(empty())
- return;
- else
- {
- int a=0;
- a=this->top;
- cout<<"栈顶元素为:"<
- }
- }
-
- //进栈
- template <typename T>
- void Zhan
::into() - {
-
- if(full())
- return;
- else
- {
- T x;
- cout<<"请输入入栈元素:";
- cin>>x;
- while(getchar()!=10);
- zhan[++(this->top)]=x;
- cout<
"入栈成功"< - }
- }
-
- //出栈
- template <typename T>
- int Zhan
::out() - {
- if(empty())
- return 0;
- else
- return zhan[(this->top)--];
- }
-
- //栈的大小
- template <typename T>
- void Zhan
::len() - {
- T a=top;
- a+=1;
- }
-
- template <typename T>
- void Zhan
::show() - {
- cout<<"现在栈元素为:";
- T a=this->top;
- for(int i=0;i<=a;i++)
- {
- cout<
" "; - }
- cout<
- }
-
- //选择功能函数
- void choose()
- {
- Zhan<double> z;
- int i=0;
- while(1)
- {
- system("CLS");
- z.show();
- cout<<"******1.入栈***********"<
- cout<<"******2.出栈***********"<
- cout<<"******3.清空栈*********"<
- cout<<"******4.栈顶元素********"<
- cout<<"******5.栈的大小********"<
- cout<<"******6.退出********"<
- cout<<"请选择功能:";
- cin>>i;
- while(getchar()!=10);
- switch(i)
- {
- case 1:
- z.into();
- break;
- case 2:
- z.out();
- break;
- case 3:
- z.clear();
- break;
- case 4:
- z.top_data();
- break;
- case 5:
- z.len();
- break;
- case 6:
- return;
- break;
- default:
- cout<<"输入错误,请重新输入"<
- break;
- }
- cout<<"请输入任意字符重新选择:";
- getchar();
- }
- }
-
-
测试文件:
- #include"zhan.h"
- int main()
- {
- choose();
- return 0;
- }
-
队列:

头文件:
- #ifndef DL_H
- #define DL_H
- #include
-
- using namespace std;
- template<typename T>
- class Duilie
- {
- private:
- T *duilie;//存放栈中的数据
- int N;//队列空间
- int top;//队列头
- int tail;//队列尾
-
- public:
- //构造函数设置空间为10
- Duilie();
-
- //析构函数
- ~Duilie();
-
- //拷贝构造
- Duilie(const Duilie &other);
-
- //清空队列
- void clear();
-
- //是否队列空
- int empty();
-
- //是否队列满
- int full();
-
- //进队列
- void into();
-
- //出队列
- int out();
-
- //队列的大小
- void len();
-
- void show();
- };
-
- void choose();
- #endif // DL_H
功能文件:
- #include"dl.h"
- template <typename T>
- Duilie
::Duilie() - {
- N=10;
- duilie=new T[N];//分配队列空间
- this->top=0;//初始化队列头尾
- this->tail=0;
- }
-
- //析构函数
- template <typename T>
- Duilie
::~Duilie() - {
- delete duilie;
- }
-
- //拷贝构造
- template <typename T>
- Duilie
::Duilie(const Duilie &other) - {
- duilie=new T(*other.duilie);
- N=other.N;
- top=other.top;
- tail=other.tail;
- }
-
- //清空队列
- template <typename T>
- void Duilie
::clear() - {
- for(int i=this->top;i!=this->tail;i=(i+1)%N)
- {
- duilie[i]=0;
- }
- this->tail=this->top=0;
- cout<<"清空成功"<
- }
-
- //是否队列空
- template <typename T>
- int Duilie
::empty() - {
- return (this->top==this->tail)?1:0;
- }
-
- //是否队列满
- template <typename T>
- int Duilie
::full() - {
- int a=this->tail;
- return ((a+1)%N==this->top)?1:0;
- }
-
- //进队列
- template <typename T>
- void Duilie
::into() - {
-
- if(full())
- return;
- else
- {
- T x;
- int a=this->tail;
- cout<<"请输入入队列的元素:";
- cin>>x;
- while(getchar()!=10);
- duilie[a]=x;
- this->tail=(this->tail+1)%N;
- cout<
"入队列成功"< - }
- }
-
- //出队列
- template <typename T>
- int Duilie
::out() - {
- if(empty())
- return 0;
- else
- {
- cout<
this->top]<<"出队列成功"< - this->top=(this->top+1)%N;
- return 1;
- }
- }
-
- //队列的大小
- template <typename T>
- void Duilie
::len() - {
- int a=0;
- a=(this->tail+N-this->top)%N;
- }
-
- template <typename T>
- void Duilie
::show() - {
- int a=this->top,b=this->tail;
- cout<<"现在队列从头到尾元素为:";
- for(int i=a;i!=b;i=(i+1)%N)
- {
- cout<
" "; - }
- cout<
- }
-
- //选择功能函数
- void choose()
- {
- int i=0;
- Duilie<double> d;
- while(1)
- {
- system("CLS");
- d.show();
- cout<<"******1.入队列***********"<
- cout<<"******2.出队列***********"<
- cout<<"******3.清空队列*********"<
- cout<<"******4.队列的大小********"<
- cout<<"******5.退出********"<
- cout<<"请选择功能:";
- cin>>i;
- while(getchar()!=10);
- switch(i)
- {
- case 1:
- d.into();
- break;
- case 2:
- d.out();
- break;
- case 3:
- d.clear();
- break;
- case 4:
- d.len();
- break;
- case 5:
- return;
- break;
- default:
-
-
相关阅读:
工业智能网关BL110应用之九: 主要接口
学习笔记 谷粒03 前端
面向对象实验五虚函数
ThreeJS-截屏下载pdf或者图片时白屏
最新ChatGPT商业运营系统源码+支持GPT4/支持ai绘画+支持Midjourney绘画
五分钟k8s入门到实战-应用配置
vs code git问题:文件明明已加入忽略文件中,还是出现
SpringCloud01
【STM32快速上手】点灯只需4步
信奥中的数学:斐波那契数列
-
原文地址:https://blog.csdn.net/yjh666jhy/article/details/132862083