• C++ day 3


    1、

    自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量,成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小

    stack.h

    1. #ifndef STACK_H
    2. #define STACK_H
    3. #include
    4. using namespace std;
    5. class Stack
    6. {
    7. private:
    8. int data[128];
    9. int top;
    10. public:
    11. Stack();
    12. ~Stack();
    13. Stack(Stack &s);
    14. //判空
    15. bool stack_empty();
    16. //返回bool类型,真为空,假为非空
    17. //判满
    18. bool stack_full();
    19. //入栈
    20. int stack_in(int num);
    21. //出栈
    22. int stack_out();
    23. //清空栈
    24. bool stack_clear();
    25. //获取栈顶元素
    26. int stack_get_top();
    27. //栈的大小
    28. int stack_size();
    29. //遍历
    30. void stack_show();
    31. };
    32. #endif // STACK_H

    stack.cpp

    1. #include"stack.h"
    2. Stack::Stack():top(-1)
    3. {
    4. cout<<"Stack:构造函数"<
    5. }
    6. Stack::~Stack()
    7. {
    8. cout<<"Stack:析构函数"<
    9. }
    10. Stack::Stack(Stack &s):top(s.top)
    11. {
    12. for(int i=0; i<=top; i++)
    13. {
    14. data[i] = s.data[i];
    15. }
    16. cout<<"Stack:拷贝构造函数"<
    17. }
    18. //判空
    19. bool Stack::stack_empty()
    20. {
    21. return -1==top;
    22. }
    23. //判满
    24. bool Stack::stack_full()
    25. {
    26. return 127==top;
    27. }
    28. //入栈
    29. int Stack::stack_in(int num)
    30. {
    31. if(Stack::stack_full())
    32. {
    33. cout<<"栈满满当当"<
    34. return -1;
    35. }
    36. //指向新的栈顶
    37. top++;
    38. //将要入栈的数据放入数组中
    39. data[top] = num;
    40. return 0;
    41. }
    42. //出栈
    43. int Stack::stack_out()
    44. {
    45. if(Stack::stack_empty())
    46. {
    47. cout<<"栈空空如也"<
    48. return -1;
    49. }
    50. return data[top--];
    51. }
    52. //清空栈
    53. bool Stack::stack_clear()
    54. {
    55. if(Stack::stack_empty())
    56. {
    57. cout<<"栈空空如也"<
    58. return false;
    59. }
    60. //清空后栈顶归位
    61. top = -1;
    62. return true;
    63. }
    64. //获取栈顶元素
    65. int Stack::stack_get_top()
    66. {
    67. if(Stack::stack_empty())
    68. {
    69. cout<<"栈空空如也"<
    70. return -1;
    71. }
    72. return data[top];
    73. }
    74. //求栈的长度
    75. int Stack::stack_size()
    76. {
    77. return top+1;
    78. }
    79. //从栈顶到栈底遍历
    80. void Stack::stack_show()
    81. {
    82. if(Stack::stack_empty())
    83. {
    84. cout<<"栈空空如也"<
    85. return ;
    86. }
    87. for(int i=top; i>-1; i--)
    88. {
    89. cout << data[i] << " ";
    90. }
    91. cout<
    92. }

    main.cpp

    1. #include
    2. #include"stack.h"
    3. using namespace std;
    4. int main()
    5. {
    6. Stack s;
    7. //入栈
    8. s.stack_in(3);
    9. s.stack_in(4);
    10. s.stack_in(8);
    11. s.stack_in(6);
    12. s.stack_in(5);
    13. //展示栈内元素
    14. cout<<"s:";
    15. s.stack_show();
    16. cout<stack_out()<<"出栈成功"<
    17. //展示栈内元素
    18. cout<<"s:";
    19. s.stack_show();
    20. //获取栈的大小
    21. cout<<"此时栈内元素的数量为:"<stack_size()<
    22. //栈顶元素为
    23. cout<<"栈顶元素为:"<stack_get_top()<
    24. //清空栈
    25. s.stack_clear();
    26. cout<<"栈清空成功"<
    27. //展示栈内元素
    28. cout<<"s:";
    29. s.stack_show();
    30. return 0;
    31. }

    测试

    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