• 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. }

  • 相关阅读:
    Unity中的三种渲染路径
    扩散模型加持下,机器人模型DALL-E-Bot可以轻松完成自主重新排列任务
    驱动开发:内核封装WSK网络通信接口
    [T3N4CI0US 2022] 一个韩国比赛
    java基于springboot医院预约挂号管理系统附代码段
    2.5 Go语言中的切片(Slice)
    FreeRTOS入门教程(队列详细使用示例)
    Gnostice PDFToolkit自动图文集的页码
    @Lazy注解的原理
    解题-->在线OJ(十九)
  • 原文地址:https://blog.csdn.net/weixin_58469613/article/details/132773839