• 23062C++&QTday3


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

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

    头文件stack.c

    1. #ifndef STACK_H
    2. #define STACK_H
    3. #include
    4. #include
    5. using namespace std;
    6. class stack
    7. {
    8. private:
    9. int data[128];
    10. int top;
    11. public:
    12. //构造函数
    13. stack();
    14. //析构函数
    15. ~stack();
    16. //拷贝构造函数
    17. stack(const stack &other);
    18. //入栈
    19. int stack_push(int e);
    20. //出栈
    21. int stack_pop();
    22. //清空栈
    23. void stack_clear();
    24. //判空
    25. bool stack_empty();
    26. //判满
    27. bool stack_full();
    28. //获取栈顶元素
    29. int &stack_top();
    30. //求栈的大小
    31. int stack_size();
    32. };
    33. #endif // STACK_H

    源文件:

    1. #include"stack.h"
    2. //构造函数
    3. stack::stack()
    4. {
    5. cout<<"构造函数"<
    6. }
    7. //析构函数
    8. stack::~stack()
    9. {
    10. delete[] data;
    11. cout<<"析构函数"<
    12. }
    13. //拷贝构造函数
    14. stack::stack(const stack &other)
    15. {
    16. cout<<"拷贝构造函数"<
    17. }
    18. //入栈
    19. int stack::stack_push(int e)
    20. {
    21. top++;
    22. data[top]=e;
    23. cout<<"入栈成功"<
    24. return 0;
    25. }
    26. //出栈
    27. int stack::stack_pop()
    28. {
    29. top--;
    30. cout<<"出栈成功"<
    31. return 0;
    32. }
    33. //清空栈
    34. void stack::stack_clear()
    35. {
    36. top=-1;
    37. return;
    38. }
    39. //判空
    40. bool stack::stack_empty()
    41. {
    42. return top==-1;
    43. }
    44. //判满
    45. bool stack::stack_full()
    46. {
    47. return top==127;
    48. }
    49. //获取栈顶元素
    50. int & stack::stack_top()
    51. {
    52. return data[top];
    53. }
    54. //求栈的大小
    55. int stack::stack_size()
    56. {
    57. return top+1;
    58. }

     测试文件:

    1. #include"stack.h"
    2. int main()
    3. {
    4. stack s1;
    5. s1.stack_push(1);
    6. s1.stack_push(2);
    7. s1.stack_pop();
    8. cout << "s1.data[top]="<stack_top()<< endl;
    9. return 0;
    10. }

    运行结果:

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

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

     头文件:

    1. #ifndef QUEUE_H
    2. #define QUEUE_H
    3. #include
    4. using namespace std;
    5. class queue
    6. {
    7. private:
    8. int data[128];
    9. int front=0;
    10. int tail=0;
    11. public:
    12. //构造函数
    13. queue();
    14. //析构函数
    15. ~queue();
    16. //拷贝构造函数
    17. queue(const queue &other );
    18. //入队
    19. int queue_push(int e);
    20. //出队
    21. int queue_pop();
    22. //清空队列
    23. void queue_delete();
    24. //判空
    25. bool queue_empty();
    26. //判满
    27. bool queue_full();
    28. //求队列的大小
    29. int queue_size();
    30. //遍历
    31. void queue_show();
    32. };
    33. #endif // QUEUE_H

    源文件:

    1. #include"queue.h"
    2. //构造函数
    3. queue::queue()
    4. {
    5. cout<<"构造函数"<
    6. }
    7. //析构函数
    8. queue::~queue()
    9. {
    10. delete[] data;
    11. cout<<"析构函数"<
    12. }
    13. //拷贝构造函数
    14. queue::queue(const queue &other )
    15. {
    16. int index=front;
    17. while(index!=tail)
    18. {
    19. data[index]=other.data[index];
    20. index=(index+1)%128;
    21. }
    22. cout<<"拷贝构造函数"<
    23. }
    24. //入队
    25. int queue:: queue_push(int e)
    26. {
    27. if(queue_full())
    28. {
    29. return -1
    30. }
    31. data[tail]=e;
    32. tail=(tail+1)%128;
    33. return 0;
    34. }
    35. //出队
    36. int queue::queue_pop()
    37. {
    38. if(queue_empty())
    39. {
    40. return -1;
    41. }
    42. front=(front+1)%128;
    43. return 0;
    44. }
    45. //清空队列
    46. void queue::queue_delete()
    47. {
    48. tail=front=0;
    49. }
    50. //判空
    51. bool queue::queue_empty()
    52. {
    53. return front==tail;
    54. }
    55. //判满
    56. bool queue::queue_full()
    57. {
    58. return (tail+1)%128==front;
    59. }
    60. //求队列的大小
    61. int queue::queue_size()
    62. {
    63. return (tail-front+128)%128;
    64. }
    65. //遍历
    66. void queue::queue_show()
    67. {
    68. for(int i=front;i!=tail;i=(i+1)%128)
    69. {
    70. cout<" ";
    71. }
    72. }

    测试文件:

    1. #include"queue.h"
    2. int main()
    3. {
    4. queue q1;
    5. q1.queue_push(520);
    6. q1.queue_push(1314);
    7. q1.queue_pop();
    8. cout<<"q1的大小为"<queue_size()<
    9. q1.queue_show();
    10. return 0;
    11. }

    运行结果:

    思维导图

  • 相关阅读:
    防火墙实验2
    java-php-python-springboot校园博客系统计算机毕业设计
    使用Zadig从0到1搭建持续交付平台
    微服务基础,分布式核心,常见微服务框架,SpringCloud概述,搭建SpringCloud微服务项目详细步骤,含源代码
    c++_learning-对象模型探索
    TPM分析笔记(七)Start-up相关命令字
    21款奔驰GLS400升级电吸门 告别异响
    Hadoop发展史
    6.MySql连接SqlYog
    下游批量推送的mysql库锁表
  • 原文地址:https://blog.csdn.net/cwj442257772/article/details/132776474