1> 自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量
成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小
头文件
- #ifndef STACK_H
- #define STACK_H
- #include
- #define max 32
-
- using namespace std;
- class Stack
- {
- private:
- int data[max];
- int top=-1;
- public:
- Stack();
- ~Stack();
- Stack(Stack &s);
- bool stack_empty();
- bool stack_full();
- int stack_push(int e);
- int stack_pop();
- int stack_top();
- int stack_size();
- void stack_clear();
- };
-
-
-
- #endif // STACK_H
源文件
- #include
- Stack::Stack()
- {
- cout<<"Stack:构造函数"<
- }
- Stack::~Stack()
- {
- cout<<"Stack:析构函数"<
- }
- Stack::Stack(Stack &s):top(s.top)
- {
- for(int i=0;i
- data[i]=s.data[i];
- }
- cout<<"Stack:拷贝构造函数"<
- }
- bool Stack::stack_empty()
- {
- if(-1==top)
- return true;
- else
- return false;
- }
- bool Stack::stack_full()
- {
- if(max-1==top)
- return true;
- else
- return false;
- }
- int Stack::stack_push(int e)
- {
- top++;
- data[top]=e;
- cout<
"入栈成功"< - return 1;
- }
- int Stack::stack_pop()
- {
- int e=data[top];
- top--;
- cout<
"出栈成功"< - return 1;
- }
- int Stack::stack_top()
- {
- int e=data[top];
- cout<<"栈顶元素为:"<
- return 1;
- }
- int Stack::stack_size()
- {
- cout<<"栈的大小为:"<
1< - return 1;
- }
- void Stack::stack_clear()
- {
- top=-1;
- cout<<"栈已清空"<
- }
测试文件
- #include
- #include
- using namespace std;
-
- int main()
- {
- Stack s;
- s.stack_push(1);
- s.stack_push(2);
- s.stack_push(3);
- s.stack_push(4);
- s.stack_size();
- s.stack_top();
- s.stack_pop();
- s.stack_pop();
- s.stack_pop();
- s.stack_pop();
- s.stack_size();
- s.stack_top();
- s.stack_clear();
- return 0;
- }
测试结果

2> 自行封装一个循环顺序队列的类,包含私有成员属性:存放队列的数组、队头位置、队尾位置
成员函数完成:构造函数、析构函数、拷贝构造函数、入队、出队、清空队列、判空、判满、求队列大小
头文件
- #ifndef QUEUE_H
- #define QUEUE_H
- #include
-
- using namespace std;
- #define max 32
- class Queue
- {
- private:
- int data[max];
- int front;
- int tail;
- public:
- Queue();
- ~Queue();
- Queue(Queue &q);
- bool queue_empty();
- bool queue_full();
- int queue_push(int e);
- int queue_pop();
- int queue_size();
- void queue_clear();
-
-
- };
-
- #endif // QUEUE_H
源文件
- #include
- Queue::Queue():front(0),tail(0)
- {
- cout<<"Queue:构造函数"<
- }
-
- Queue::~Queue()
- {
- cout<<"Queue:析构函数"<
- }
- Queue::Queue(Queue &q):front(q.front),tail(q.tail)
- {
- while(front!=tail){
- data[front]=q.data[front];
- front=(front+1)%max;
- }
- }
- bool Queue::queue_empty()
- {
- if(front==tail)
- return true;
- else
- return false;
- }
- bool Queue::queue_full()
- {
- if((tail+1)%max==front)
- return true;
- else
- return false;
- }
- int Queue::queue_push(int e)
- {
- if(Queue::queue_full()){
- cout<<"入队失败"<
- return -1;
- }
- data[tail]=e;
- tail=(tail+1)%max;
- cout<
"入队成功"< - return 1;
- }
- int Queue::queue_pop()
- {
- if(Queue::queue_empty()){
- cout<<"出队失败"<
- return -1;
- }
- front=(front+1)%max;
- cout<<"出队成功"<
- return 1;
- }
- int Queue::queue_size()
- {
- int size=(tail-front+max)%max;
- cout<<"队长为:"<
- return size;
- }
- void Queue::queue_clear()
- {
- front=tail;
- cout<<"清空队列"<
- return;
- }
测试文件
- #include
- #include
- using namespace std;
-
- int main()
- {
- Queue q;
- q.queue_push(1);
- q.queue_push(2);
- q.queue_push(3);
- q.queue_push(4);
- q.queue_size();
- q.queue_pop();
- q.queue_pop();
- q.queue_pop();
- q.queue_pop();
- q.queue_size();
- q.queue_clear();
- return 0;
- }
测试结果

思维导图

-
相关阅读:
Hadoop入门(五):集群配置
简单三招,就能将ppt翻译成英文,快来学习
在中国 ToB 市场,选一个对的供应商太难了
Linux基础教程:8、linux的进程管理(1)
超越想象!高效快速的大规模相似性搜索引擎与卓越GPU加速分析,助力您的数据发现新纪元
WEB 渗透之CSRF
QT实现多线程两种方式案例详解
04 【Sass语法介绍-运算】
CentOS上网卡不显示的问题
java计算机毕业设计桂林恒保健康防护有限公司官网MyBatis+系统+LW文档+源码+调试部署
-
原文地址:https://blog.csdn.net/m0_64549633/article/details/132779455