1、
自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量,成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小
stack.h
- #ifndef STACK_H
- #define STACK_H
-
- #include
-
- using namespace std;
-
-
- class Stack
- {
-
- private:
- int data[128];
- int top;
- public:
- Stack();
- ~Stack();
- Stack(Stack &s);
-
- //判空
- bool stack_empty();
- //返回bool类型,真为空,假为非空
- //判满
- bool stack_full();
-
- //入栈
- int stack_in(int num);
-
- //出栈
- int stack_out();
-
- //清空栈
- bool stack_clear();
-
- //获取栈顶元素
-
- int stack_get_top();
-
- //栈的大小
-
- int stack_size();
-
- //遍历
- void stack_show();
-
-
- };
-
-
- #endif // STACK_H
stack.cpp
- #include"stack.h"
-
-
-
- Stack::Stack():top(-1)
- {
- cout<<"Stack:构造函数"<
- }
-
- Stack::~Stack()
- {
- cout<<"Stack:析构函数"<
- }
-
- Stack::Stack(Stack &s):top(s.top)
- {
- for(int i=0; i<=top; i++)
- {
- data[i] = s.data[i];
- }
- cout<<"Stack:拷贝构造函数"<
- }
-
- //判空
-
- bool Stack::stack_empty()
- {
- return -1==top;
- }
-
- //判满
-
- bool Stack::stack_full()
- {
- return 127==top;
- }
-
- //入栈
-
- int Stack::stack_in(int num)
- {
- if(Stack::stack_full())
- {
- cout<<"栈满满当当"<
- return -1;
- }
- //指向新的栈顶
- top++;
- //将要入栈的数据放入数组中
-
- data[top] = num;
- return 0;
- }
-
- //出栈
- int Stack::stack_out()
- {
- if(Stack::stack_empty())
- {
- cout<<"栈空空如也"<
- return -1;
- }
-
- return data[top--];
- }
-
- //清空栈
- bool Stack::stack_clear()
- {
- if(Stack::stack_empty())
- {
- cout<<"栈空空如也"<
- return false;
- }
-
- //清空后栈顶归位
- top = -1;
- return true;
- }
-
- //获取栈顶元素
- int Stack::stack_get_top()
- {
- if(Stack::stack_empty())
- {
- cout<<"栈空空如也"<
- return -1;
- }
- return data[top];
- }
-
- //求栈的长度
- int Stack::stack_size()
- {
- return top+1;
- }
-
- //从栈顶到栈底遍历
- void Stack::stack_show()
- {
- if(Stack::stack_empty())
- {
- cout<<"栈空空如也"<
- return ;
- }
- for(int i=top; i>-1; i--)
- {
- cout << data[i] << " ";
- }
- cout<
- }
main.cpp
- #include
-
- #include"stack.h"
-
- using namespace std;
-
- int main()
- {
- Stack s;
- //入栈
-
- s.stack_in(3);
- s.stack_in(4);
- s.stack_in(8);
- s.stack_in(6);
- s.stack_in(5);
-
- //展示栈内元素
- cout<<"s:";
- s.stack_show();
-
- cout<
stack_out()<<"出栈成功"< - //展示栈内元素
- cout<<"s:";
- s.stack_show();
- //获取栈的大小
- cout<<"此时栈内元素的数量为:"<
stack_size()< - //栈顶元素为
- cout<<"栈顶元素为:"<
stack_get_top()< - //清空栈
- s.stack_clear();
- cout<<"栈清空成功"<
- //展示栈内元素
- cout<<"s:";
- s.stack_show();
-
-
- return 0;
- }
测试
2、
自行封装一个循环顺序队列的类,包含私有成员属性:存放队列的数组、队头位置、队尾位置
成员函数完成:构造函数、析构函数、拷贝构造函数、入队、出队、清空队列、判空、判满、求队列大小
3、思维导图
-
相关阅读:
数组扁平化(es6)
Java23种设计模式
【LeetCode】235.二叉搜索树的最近公共祖先
开源驰骋低代码-积极拥抱AI时代
你不能不了解的Vue【模板语法上集】!
基于Echarts实现可视化数据大屏机械设备监测大数据统计平台HTML页面
【工具配置篇】VSCode 常用使用总结
2021年12月电子学会图形化二级编程题解析含答案:绘制多边形
删库遭 GitHub 封号,开发者欲夺回发行权:“我只是犯了个编程错误”
解决连接数据库提示:Public Key Retrieval is not allowed
-
原文地址:https://blog.csdn.net/A18801772899/article/details/132797414