• day42


    1. #include
    2. using namespace std;
    3. template <typename T>
    4. class stu
    5. {
    6. private:
    7. T num[20];
    8. T head;
    9. T low;
    10. public:
    11. stu(){}
    12. stu(T h,T l):head(h),low(l)
    13. {
    14. cout<<"有参构造"<
    15. }
    16. ~stu()
    17. {
    18. cout<<"析构函数"<
    19. }
    20. stu(const stu &other):head(other.head),low(other.low)
    21. {
    22. cout<<"拷贝构造函数"<
    23. }
    24. //判空
    25. bool queue_empty();
    26. //判满
    27. bool queue_full();
    28. //入队
    29. void queue_push(int n);
    30. //出队
    31. void queue_pop();
    32. //清空
    33. void queue_null();
    34. //队列长度
    35. void queue_size();
    36. };
    37. //判空
    38. template <typename T>
    39. bool stu::queue_empty()
    40. {
    41. if(this->low==this->head)
    42. {
    43. return 1;
    44. }
    45. return 0;
    46. }
    47. //判满
    48. template <typename T>
    49. bool stu::queue_full()
    50. {
    51. if((this->low+1)%20==head)
    52. {
    53. return 1;
    54. }
    55. return 0;
    56. }
    57. //入队
    58. template <typename T>
    59. void stu::queue_push(int n)
    60. {
    61. if(queue_full())
    62. {
    63. cout<<"队列已满"<
    64. }
    65. this->num[this->low]=n;
    66. this->low=(this->low+1)%20;
    67. cout<<"入队成功"<
    68. }
    69. //出队
    70. template <typename T>
    71. void stu::queue_pop()
    72. {
    73. if(queue_empty())
    74. {
    75. cout<<"出队失败"<
    76. }
    77. cout<<"出队成功"<<this->num[this->head]<
    78. this->head=(this->head+1)%20;
    79. }
    80. //清空
    81. template <typename T>
    82. void stu::queue_null()
    83. {
    84. while(1)
    85. {
    86. cout<<this->num[this->head]<
    87. this->head=(this->head+1)%20;
    88. if(this->head==this->low)
    89. {
    90. cout<<"清空成功"<
    91. break;
    92. }
    93. }
    94. }
    95. //队列长度
    96. template <typename T>
    97. void stu::queue_size()
    98. {
    99. cout<<"队列长度"<<(this->low-this->head+20)%20<
    100. }
    101. int main()
    102. {
    103. stu<int> p1(0,0);
    104. p1.queue_push(5);
    105. p1.queue_push(8);
    106. p1.queue_push(10);
    107. p1.queue_pop();
    108. p1.queue_size();
    109. p1.queue_null();
    110. p1.queue_size();
    111. return 0;
    112. }

    1. #include
    2. using namespace std;
    3. template<typename T>
    4. class stu
    5. {
    6. private:
    7. T num[20];
    8. T top;
    9. public:
    10. stu(){}
    11. //构造
    12. stu(int n,int t)
    13. {
    14. num[top]=n;
    15. top=t;
    16. cout<<"stu::构造函数"<
    17. }
    18. //析构
    19. ~stu()
    20. {
    21. cout<<"stu::析构函数"<<this<
    22. }
    23. //拷贝
    24. stu(const stu &other):num(other.num),top(other.top)
    25. {
    26. cout<<"拷贝构造函数"<
    27. }
    28. //判空
    29. bool stack_empty();
    30. //判满
    31. bool stack_full();
    32. //入栈
    33. void stack_push(int n);
    34. //出栈
    35. void stack_pop();
    36. //遍历栈
    37. void stack_show();
    38. //清空栈
    39. void stack_null();
    40. //获取栈顶元素
    41. void stack_top();
    42. //求栈的大小
    43. void stack_num();
    44. };
    45. //判空
    46. template <typename T>
    47. bool stu::stack_empty()
    48. {
    49. if(-1==top)
    50. {
    51. return 1;
    52. }
    53. return 0;
    54. }
    55. //判满
    56. template <typename T>
    57. bool stu::stack_full()
    58. {
    59. if(19==top)
    60. {
    61. return 1;
    62. }
    63. return 0;
    64. }
    65. //入栈
    66. template <typename T>
    67. void stu::stack_push(int n)
    68. {
    69. this->top++;
    70. this->num[this->top]=n;
    71. cout<<"入栈成功"<
    72. }
    73. //出栈
    74. template <typename T>
    75. void stu:: stack_pop()
    76. {
    77. if(stack_empty())
    78. {
    79. cout<<"出栈失败"<
    80. }
    81. int n = this->num[this->top];
    82. cout<<"出栈成功:"<
    83. this->top--;
    84. }
    85. //遍历栈
    86. template <typename T>
    87. void stu:: stack_show()
    88. {
    89. if(stack_empty())
    90. {
    91. cout<<"遍历失败"<
    92. }
    93. cout<<"从栈顶到栈底分别为"<
    94. for(int i=this->top;i>=0;i--)
    95. {
    96. cout<<this->num[i]<<" ";
    97. }
    98. cout<
    99. }
    100. //清空栈
    101. template <typename T>
    102. void stu:: stack_null()
    103. {
    104. if(stack_empty())
    105. {
    106. cout<<"清空失败"<
    107. }
    108. for(int i=this->top;i>=0;i--)
    109. {
    110. this->num[i]=NULL;
    111. }
    112. cout<<"清空成功"<
    113. }
    114. //获取栈顶元素
    115. template <typename T>
    116. void stu:: stack_top()
    117. {
    118. cout<<"栈顶元素"<<this->num[this->top]<
    119. }
    120. //求栈的大小
    121. template <typename T>
    122. void stu:: stack_num()
    123. {
    124. cout<<"栈的大小:"<<this->top+1<
    125. }
    126. int main()
    127. {
    128. stu<int> s1(0,-1);
    129. s1.stack_push(6);
    130. s1.stack_push(8);
    131. s1.stack_push(9);
    132. s1.stack_show();
    133. s1.stack_top();
    134. s1.stack_num();
    135. s1.stack_null();
    136. s1.stack_show();
    137. return 0;
    138. }

     

  • 相关阅读:
    正点原子嵌入式linux驱动开发——RGB转HDMI
    iOS 那些不为人知的bug: Error Domain=NSCocoaErrorDomain Code=3840
    ASP.NET Core 各版本 中间件或过滤器中获取Post参数方法
    三、创建脚手架和脚手架分析
    传输层_TCP&UDP
    超越AnimateAnyone, 华中科大&中科大&阿里提出Unimate,可以根据单张图片和姿势指导生成视频。
    Seata分布式事务
    软件测试中如何快速Linux下部署禅道
    智能驾驶感知技术的综述与展望
    提问:为什么整数乘于0.01小数会变成很多小数?java+js
  • 原文地址:https://blog.csdn.net/weixin_69452640/article/details/132863136