码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++ Day3


    目录

    1. 自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量

    成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小

    2.自行封装一个循环顺序队列的类,包含私有成员属性:存放队列的数组、队头位置、队尾位置

    成员函数完成:构造函数、析构函数、拷贝构造函数、入队、出队、清空队列、判空、判满、求队列大小


    1. 自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量

    成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小

    1. #include
    2. using namespace std;
    3. class Sta
    4. {
    5. private:
    6. int arr[128];
    7. int len=-1;
    8. public:
    9. // 显性定义无参构造函数
    10. Sta();
    11. //析构函数
    12. ~Sta();
    13. //拷贝构造函数
    14. Sta(const Sta &other);
    15. //判空
    16. bool Sta_empty();
    17. //判满
    18. bool Sta_full();
    19. //入栈
    20. void Sta_insert();
    21. //出栈
    22. void Sta_pop();
    23. //清空栈
    24. void Sta_outall();
    25. //获取栈顶元素
    26. int Sta_topdata();
    27. //求栈的大小
    28. int Sta_size();
    29. };
    30. // 显性定义无参构造函数
    31. Sta::Sta()
    32. {
    33. cout<<"Sta::无参构造"<
    34. }
    35. //析构函数
    36. Sta::~Sta()
    37. {
    38. cout<<"Sta::析构函数"<
    39. }
    40. //拷贝构造函数
    41. Sta::Sta(const Sta &other)
    42. {
    43. this->len=other.len;
    44. cout<<"Sta::拷贝构造函数"<
    45. }
    46. //判空
    47. bool Sta::Sta_empty()
    48. {
    49. if(-1==len)
    50. {
    51. return true;
    52. }
    53. return false;
    54. }
    55. //判满
    56. bool Sta::Sta_full()
    57. {
    58. if(127==len)
    59. {
    60. return true;
    61. }
    62. return false;
    63. }
    64. //入栈
    65. void Sta::Sta_insert()
    66. {
    67. if(Sta_full())
    68. {
    69. cout<<"栈满了,入栈失败"<
    70. return ;
    71. }
    72. int i;
    73. cout<<"请输入要入栈的数据:";
    74. cin>>i;
    75. arr[len+1]=i;
    76. len++;
    77. cout<<"入栈成功"<
    78. return ;
    79. }
    80. //出栈
    81. void Sta::Sta_pop()
    82. {
    83. if(Sta_empty())
    84. {
    85. cout<<"已经是空栈了,不能出栈了"<
    86. return ;
    87. }
    88. int i=0;
    89. i=arr[len];
    90. len--;
    91. cout<"出栈成功"<
    92. return ;
    93. }
    94. //清空栈
    95. void Sta::Sta_outall()
    96. {
    97. if(Sta_empty())
    98. {
    99. cout<<"已经是空栈了,不需要清空栈"<
    100. return ;
    101. }
    102. int temp=0;
    103. for(;len>=0;len--)
    104. {
    105. temp=arr[len];
    106. cout<"出栈成功"<
    107. }
    108. cout<<"清空栈完成"<
    109. return ;
    110. }
    111. //获取栈顶元素
    112. int Sta::Sta_topdata()
    113. {
    114. if(Sta_empty())
    115. {
    116. cout<<"空栈,获取个der"<
    117. return -1;
    118. }
    119. return arr[len];
    120. }
    121. //求栈的大小
    122. int Sta::Sta_size()
    123. {
    124. return len+1;
    125. }
    126. int main()
    127. {
    128. Sta six;
    129. six.Sta_insert();
    130. six.Sta_insert();
    131. six.Sta_insert();
    132. six.Sta_insert();
    133. six.Sta_insert();
    134. six.Sta_pop();
    135. int i=0;
    136. i=six.Sta_topdata();
    137. cout<<"栈顶元素:"<
    138. int x=0;
    139. x=six.Sta_size();
    140. cout<<"栈的大小为:"<
    141. six.Sta_outall();
    142. return 0;
    143. }

    2.自行封装一个循环顺序队列的类,包含私有成员属性:存放队列的数组、队头位置、队尾位置

    成员函数完成:构造函数、析构函数、拷贝构造函数、入队、出队、清空队列、判空、判满、求队列大小

    1. #include
    2. using namespace std;
    3. class Que
    4. {
    5. private:
    6. int arr[128];
    7. int front;
    8. int tail;
    9. public:
    10. // 显性定义有参构造函数
    11. Que(int front,int tail);
    12. //析构函数
    13. ~Que();
    14. //拷贝构造函数
    15. Que(const Que &other);
    16. //判空
    17. bool Que_empty();
    18. //判满
    19. bool Que_full();
    20. //入队
    21. void Que_insert();
    22. //出队
    23. void Que_pop();
    24. //清空队
    25. void Que_outall();
    26. //求队的大小
    27. int Que_size();
    28. };
    29. // 显性定义无参构造函数
    30. Que::Que(int front,int tail):front(front),tail(tail)
    31. {
    32. cout<<"Que::有参构造"<
    33. }
    34. //析构函数
    35. Que::~Que()
    36. {
    37. cout<<"Que::析构函数"<
    38. }
    39. //拷贝构造函数
    40. Que::Que(const Que &other)
    41. {
    42. this->front=other.front;
    43. this->tail=other.tail;
    44. cout<<"Que::拷贝构造函数"<
    45. }
    46. //判空
    47. bool Que::Que_empty()
    48. {
    49. if(front==tail)
    50. {
    51. return true;
    52. }
    53. return false;
    54. }
    55. //判满
    56. bool Que::Que_full()
    57. {
    58. if((tail+1)%128==front)
    59. {
    60. return true;
    61. }
    62. return false;
    63. }
    64. //入队
    65. void Que::Que_insert()
    66. {
    67. if(Que_full())
    68. {
    69. cout<<"队满了,入队失败"<
    70. return ;
    71. }
    72. int i;
    73. cout<<"请输入要入队的数据:";
    74. cin>>i;
    75. arr[tail]=i;
    76. tail=(tail+1)%128;
    77. cout<<"入队成功"<
    78. return ;
    79. }
    80. //出队
    81. void Que::Que_pop()
    82. {
    83. if(Que_empty())
    84. {
    85. cout<<"已经是空队了,不能出队了"<
    86. return ;
    87. }
    88. int i=0;
    89. i=arr[front];
    90. front=(front+1)%128;
    91. cout<"出队成功"<
    92. return ;
    93. }
    94. //清空队
    95. void Que::Que_outall()
    96. {
    97. if(Que_empty())
    98. {
    99. cout<<"已经是空队了,不需要清空队"<
    100. return ;
    101. }
    102. cout<<"开始清空队列"<
    103. int temp=0;
    104. for(;front!=tail;front=(front+1)%128)
    105. {
    106. temp=arr[front];
    107. cout<"出队成功"<
    108. }
    109. cout<<"清空队完成"<
    110. return ;
    111. }
    112. //求队的大小
    113. int Que::Que_size()
    114. {
    115. return (tail+128-front)%128;
    116. }
    117. int main()
    118. {
    119. //有参 构造
    120. Que six(0,0);
    121. six.Que_insert();
    122. six.Que_insert();
    123. six.Que_insert();
    124. six.Que_insert();
    125. six.Que_insert();
    126. six.Que_pop();
    127. int x=0;
    128. x=six.Que_size();
    129. cout<<"队的大小为:"<
    130. six.Que_outall();
    131. return 0;
    132. }

  • 相关阅读:
    关于串口服务器及转接线的一些基础知识笔记
    揭秘老外聊天时常用的英文缩写
    儿童护眼灯哪个品牌最好?盘点眼科医生推荐的五款护眼灯
    SpringBoot自动配置原理
    【编码魔法师系列_构建型2.1】单例模式「饿汉式」(Singleton Pattern)
    rk3588 mpp_log 不打印输出
    独家 | 是时候和pd.read_csv(), pd.to_csv()说再见了
    【机器学习】包裹式特征选择之基于遗传算法的特征选择
    Linux 磁盘扩容及挂载新盘
    聚苯乙烯红色/橙色/绿色荧光微球/硼酸基团苝酰亚胺荧光分子聚苯乙烯共聚乳胶粒的制备
  • 原文地址:https://blog.csdn.net/weixin_58469613/article/details/132773839
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号