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、思维导图

-
相关阅读:
数据结构:交换排序
通过面积证明:两个函数相乘 / 相除的导数为什么长成这样?
[Linux] yum安装软件
SpringBoot Mybatis 多数据源 MySQL+Oracle+Redis
图像变换算法
包装接口,处理数据
【树莓派】起步(Snappy Ubuntu Core)
关于wParam和lParam
算法通关村第十八关:青铜挑战-回溯是怎么回事
农村创业最新项目有哪些?适合青年农民创业!
-
原文地址:https://blog.csdn.net/A18801772899/article/details/132797414