- #ifndef Z_H
- #define Z_H
- #include
-
- using namespace std;
-
- class Zhan
- {
- private:
- int *zhan;//存放栈中的数据
- int N;//栈空间
- int top;//栈顶
-
- public:
- //构造函数设置空间为10
- Zhan();
-
- //析构函数
- ~Zhan();
-
- //清空栈
- void clear();
-
- //是否栈空
- int empty();
-
- //是否栈满
- int full();
-
- //获取栈顶元素
- void top_data();
-
- //进栈
- void into();
-
- //出栈
- int out();
-
- //栈的大小
- void len();
-
- void show();
- };
-
- void choose();
-
- #endif // Z_H
- #include"z.h"
- Zhan::Zhan()
- {
- N=10;
- zhan=new int[N];//分配栈空间
- this->top=-1;//初始化栈顶
- }
-
- //析构函数
- Zhan::~Zhan()
- {
- delete zhan;
- }
-
- //清空栈
- void Zhan::clear()
- {
- this->top=-1;
- cout<<"清空成功"<
- }
-
- //是否栈空
- int Zhan::empty()
- {
- return (this->top==-1)?1:0;
- }
-
- //是否栈满
- int Zhan::full()
- {
- return (this->top==N-1)?1:0;
- }
-
- //获取栈顶元素
- void Zhan::top_data()
- {
- if(empty())
- return;
- else
- {
- int a=0;
- a=this->top;
- cout<<"栈顶元素为:"<
- }
- }
-
- //进栈
- void Zhan::into()
- {
-
- if(full())
- return;
- else
- {
- int x;
- cout<<"请输入入栈元素:";
- cin>>x;
- while(getchar()!=10);
- zhan[++(this->top)]=x;
- cout<
"入栈成功"< - }
- }
-
- //出栈
- int Zhan::out()
- {
- if(empty())
- return 0;
- else
- return zhan[(this->top)--];
- }
-
- //栈的大小
- void Zhan::len()
- {
- int a=top;
- a+=1;
- }
-
- void Zhan::show()
- {
- cout<<"现在栈元素为:";
- int a=this->top;
- for(int i=0;i<=a;i++)
- {
- cout<
" "; - }
- cout<
- }
-
- //选择功能函数
- void choose()
- {
- int i=0;
- Zhan z;
- 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"z.h"
- int main()
- {
- choose();
- return 0;
- }
2> 自行封装一个循环顺序队列的类,包含私有成员属性:存放队列的数组、队头位置、队尾位置
成员函数完成:构造函数、析构函数、拷贝构造函数、入队、出队、清空队列、判空、判满、求队列大小
头文件:
- #ifndef DL_H
- #define DL_H
- #include
-
- using namespace std;
-
- class Duilie
- {
- private:
- int *duilie;//存放栈中的数据
- int N;//队列空间
- int top;//队列头
- int tail;//队列尾
-
- public:
- //构造函数设置空间为10
- Duilie();
-
- //析构函数
- ~Duilie();
-
- //清空队列
- void clear();
-
- //是否队列空
- int empty();
-
- //是否队列满
- int full();
-
- //进队列
- void into();
-
- //出队列
- int out();
-
- //队列的大小
- void len();
-
- void show();
- };
-
- void choose();
- #endif // DL_H
功能函数文件:
- #include"dl.h"
- Duilie::Duilie()
- {
- N=10;
- duilie=new int[N];//分配队列空间
- this->top=0;//初始化队列头尾
- this->tail=0;
- }
-
- //析构函数
- Duilie::~Duilie()
- {
- delete duilie;
- }
-
- //清空队列
- void Duilie::clear()
- {
- for(int i=this->top;i!=this->tail;i=(i+1)%N)
- {
- duilie[i]=0;
- }
- this->tail=this->top=0;
- cout<<"清空成功"<
- }
-
- //是否队列空
- int Duilie::empty()
- {
- return (this->top==this->tail)?1:0;
- }
-
- //是否队列满
- int Duilie::full()
- {
- int a=this->tail;
- return ((a+1)%N==this->top)?1:0;
- }
-
- //进队列
- void Duilie::into()
- {
-
- if(full())
- return;
- else
- {
- int x;
- int a=this->tail;
- cout<<"请输入入队列的元素:";
- cin>>x;
- while(getchar()!=10);
- duilie[a]=x;
- this->tail=(this->tail+1)%N;
- cout<
"入队列成功"< - }
- }
-
- //出队列
- int Duilie::out()
- {
- if(empty())
- return 0;
- else
- {
- cout<
this->top]<<"出队列成功"< - this->top=(this->top+1)%N;
- return 1;
- }
- }
-
- //队列的大小
- void Duilie::len()
- {
- int a=0;
- a=(this->tail+N-this->top)%N;
- }
-
- 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 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:
-
-
相关阅读:
3.消息队列全面总结——ActiveMq,RabbitMQ,RocketMq,Kafa
学习队列,Java实现
(2023,GPT-4V,LLM,LMM,功能和应用)大型多模态模型的黎明:GPT-4V(ision) 的初步探索
LeetCode 35. 搜索插入位置
AspNetCoreRateLimit应用于MVC项目求助
972信息检索 | 第一章 信息检索概述
C#与物联网:打造智能家居解决方案
springboot整合minio上传文件
Chrome扩展V2到V3的变化
少儿编程Python大纲:趣味编程,探索未来
-
原文地址:https://blog.csdn.net/yjh666jhy/article/details/132765993