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;
- }
测试结果
思维导图
-
相关阅读:
医学图像分类 神经网络,神经网络和图神经网络
百度智能小程序源码系统:打造极致用户体验的关键 带完整搭建教程
通过AOP实现全局日志打印
Canonical Address
PMP每日一练 | 考试不迷路-11.19(包含敏捷+多选)
2023-10-20 LeetCode每日一题(根据规则将箱子分类)
JavaWeb前端框架VUE和Element组件详解
Let‘s Encrypt && acme
Delphi 高精度计时
沉睡者IT - 抖音中视频计划赚钱项目初级教程
-
原文地址:https://blog.csdn.net/m0_64549633/article/details/132779455