• 9.13号作业


    1> 将之前定义的栈类和队列类都实现成模板类

    栈的模块类

    1. #include <iostream>
    2. using namespace std;
    3. template <typename T>
    4. class Stack
    5. {
    6. private:
    7. T data[40]={0};
    8. T top=-1;
    9. public:
    10. Stack ()
    11. {
    12. cout<<"这是构造函数"<<endl;
    13. }
    14. int stack_empty();
    15. int stack_full();
    16. int stack_push(int e);
    17. int stack_pop();
    18. int stack_size();
    19. int stack_top();
    20. int stack_fullpop();
    21. ~Stack ()
    22. {
    23. cout<<"这是析构函数"<<endl;
    24. }
    25. };
    26. template <typename T>
    27. int Stack<T>::stack_empty()
    28. {
    29. if(top==-1)
    30. {
    31. cout<<"栈为空"<<endl;
    32. }
    33. return 1;
    34. }
    35. template <typename T>
    36. int Stack<T>::stack_full()
    37. {
    38. if(top==39)
    39. {
    40. cout<<"栈为满"<<endl;
    41. }
    42. return 1;
    43. }
    44. template <typename T>
    45. int Stack<T>::stack_push(int e)
    46. {
    47. stack_full();
    48. cout<<"进行入栈"<<endl;
    49. top++;
    50. data[top]=e;
    51. cout<<"入栈成功"<<endl;
    52. return 1;
    53. }
    54. template <typename T>
    55. int Stack<T>::stack_pop()
    56. {
    57. stack_empty();
    58. cout<<"进行出栈"<<endl;
    59. int e =data[top];
    60. top--;
    61. cout<<e<<"出栈成功"<<endl;
    62. return 1;
    63. }
    64. template <typename T>
    65. int Stack<T>::stack_top()
    66. {
    67. cout<<"栈顶元素为"<<data[top]<<endl;
    68. return 1;
    69. }
    70. template <typename T>
    71. int Stack<T>::stack_size()
    72. {
    73. return top+1;
    74. }
    75. template <typename T>
    76. int Stack<T>::stack_fullpop()
    77. {
    78. for(int i=top;i>-1;i--)
    79. {
    80. cout<<data[i]<<"出栈成功"<<endl;
    81. }
    82. cout<<"清空栈成功"<<endl;
    83. return 1;
    84. }
    85. int main()
    86. {
    87. Stack<int> s1;
    88. s1.stack_push(2);
    89. s1.stack_push(5);
    90. s1.stack_push(6);
    91. s1.stack_push(3);
    92. s1.stack_pop();
    93. cout<<"栈的大小"<<s1.stack_size()<<endl;
    94. s1.stack_top();
    95. s1.stack_fullpop();
    96. return 0;
    97. }

    队列的模块类

    1. #include <iostream>
    2. #define MAX 40
    3. using namespace std;
    4. template <typename T>
    5. class Queue
    6. {
    7. private:
    8. T data[MAX]={0};
    9. int front=0;
    10. int tail=0;
    11. public:
    12. Queue()
    13. {
    14. cout<<"这里是构造函数"<<endl;
    15. }
    16. int queue_empty(); //判空
    17. int queue_full(); //判满
    18. int queue_push(int e); //入队
    19. int queue_pop(); //出队
    20. int queue_size(); // 队列长度
    21. int queue_fullpop(); //清空队列,全部出队
    22. ~Queue()
    23. {
    24. cout<<"这是析构函数"<<endl;
    25. }
    26. };
    27. template <typename T>
    28. int Queue<T>::queue_empty() //判空
    29. {
    30. return front==tail;
    31. }
    32. template <typename T>
    33. int Queue<T>::queue_full() //判满
    34. {
    35. return (tail+1)%MAX ==front;
    36. }
    37. template <typename T>
    38. int Queue<T>::queue_push(int e) //入队
    39. {
    40. queue_full();
    41. cout<<"进行入队"<<endl;
    42. data[tail]=e;
    43. tail++;
    44. cout<<"入队成功"<<endl;
    45. return 1;
    46. }
    47. template <typename T>
    48. int Queue<T>::queue_pop() //出队
    49. {
    50. queue_empty() ;
    51. cout<<"进行出队"<<endl;
    52. int pop=data[front];
    53. cout<<pop<<"出队成功"<<endl;
    54. front++;
    55. return 1;
    56. }
    57. template <typename T>
    58. int Queue<T>::queue_size() // 队列长度
    59. {
    60. return (tail+MAX-front)%MAX;
    61. }
    62. template <typename T>
    63. int Queue<T>::queue_fullpop() //清空队列,全部出队
    64. {
    65. for(int i=front;i!=tail;i++)
    66. {
    67. cout<<data[i]<<"出队成功"<<endl;
    68. }
    69. cout<<"清空队列成功"<<endl;
    70. return 1;
    71. }
    72. int main()
    73. {
    74. Queue<int> q1;
    75. q1.queue_push(8);
    76. q1.queue_push(9);
    77. q1.queue_push(6);
    78. q1.queue_push(5);
    79. q1.queue_push(8);
    80. q1.queue_pop();
    81. q1.queue_pop();
    82. int size=q1.queue_size();
    83. cout<<"队列长度为"<<size<<endl;
    84. q1.queue_fullpop();
    85. return 0;
    86. }

    2.思维导图

  • 相关阅读:
    sqlite加载csv文件,并做数据分析
    学术界or工业界,高校博后转行大厂工程师心得!
    windows10下 iperf3测试带宽
    计算机网络(自顶向下方法)-网络层
    快速搭建Linux网站,并利用内网穿透实现宝塔面板的公网访问【内网穿透】
    【Hadoop】Hadoop概述与核心组件
    【开源项目】个人如何在开源社区中成长?
    ssm+vue+elementUI基于微信小程序的电动电动汽车车智能充电桩服务平台-计算机毕业设计
    【无标题】
    仿bilibili视频弹幕播放器介绍&搭建
  • 原文地址:https://blog.csdn.net/weixin_56612097/article/details/132863074