• C++day3


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

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

    头文件

    1. #ifndef STACK_H
    2. #define STACK_H
    3. #include
    4. #define max 32
    5. using namespace std;
    6. class Stack
    7. {
    8. private:
    9. int data[max];
    10. int top=-1;
    11. public:
    12. Stack();
    13. ~Stack();
    14. Stack(Stack &s);
    15. bool stack_empty();
    16. bool stack_full();
    17. int stack_push(int e);
    18. int stack_pop();
    19. int stack_top();
    20. int stack_size();
    21. void stack_clear();
    22. };
    23. #endif // STACK_H

    源文件

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

    测试文件

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. Stack s;
    7. s.stack_push(1);
    8. s.stack_push(2);
    9. s.stack_push(3);
    10. s.stack_push(4);
    11. s.stack_size();
    12. s.stack_top();
    13. s.stack_pop();
    14. s.stack_pop();
    15. s.stack_pop();
    16. s.stack_pop();
    17. s.stack_size();
    18. s.stack_top();
    19. s.stack_clear();
    20. return 0;
    21. }

    测试结果

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

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

    头文件

    1. #ifndef QUEUE_H
    2. #define QUEUE_H
    3. #include
    4. using namespace std;
    5. #define max 32
    6. class Queue
    7. {
    8. private:
    9. int data[max];
    10. int front;
    11. int tail;
    12. public:
    13. Queue();
    14. ~Queue();
    15. Queue(Queue &q);
    16. bool queue_empty();
    17. bool queue_full();
    18. int queue_push(int e);
    19. int queue_pop();
    20. int queue_size();
    21. void queue_clear();
    22. };
    23. #endif // QUEUE_H

    源文件

    1. #include
    2. Queue::Queue():front(0),tail(0)
    3. {
    4. cout<<"Queue:构造函数"<
    5. }
    6. Queue::~Queue()
    7. {
    8. cout<<"Queue:析构函数"<
    9. }
    10. Queue::Queue(Queue &q):front(q.front),tail(q.tail)
    11. {
    12. while(front!=tail){
    13. data[front]=q.data[front];
    14. front=(front+1)%max;
    15. }
    16. }
    17. bool Queue::queue_empty()
    18. {
    19. if(front==tail)
    20. return true;
    21. else
    22. return false;
    23. }
    24. bool Queue::queue_full()
    25. {
    26. if((tail+1)%max==front)
    27. return true;
    28. else
    29. return false;
    30. }
    31. int Queue::queue_push(int e)
    32. {
    33. if(Queue::queue_full()){
    34. cout<<"入队失败"<
    35. return -1;
    36. }
    37. data[tail]=e;
    38. tail=(tail+1)%max;
    39. cout<"入队成功"<
    40. return 1;
    41. }
    42. int Queue::queue_pop()
    43. {
    44. if(Queue::queue_empty()){
    45. cout<<"出队失败"<
    46. return -1;
    47. }
    48. front=(front+1)%max;
    49. cout<<"出队成功"<
    50. return 1;
    51. }
    52. int Queue::queue_size()
    53. {
    54. int size=(tail-front+max)%max;
    55. cout<<"队长为:"<
    56. return size;
    57. }
    58. void Queue::queue_clear()
    59. {
    60. front=tail;
    61. cout<<"清空队列"<
    62. return;
    63. }

    测试文件

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. Queue q;
    7. q.queue_push(1);
    8. q.queue_push(2);
    9. q.queue_push(3);
    10. q.queue_push(4);
    11. q.queue_size();
    12. q.queue_pop();
    13. q.queue_pop();
    14. q.queue_pop();
    15. q.queue_pop();
    16. q.queue_size();
    17. q.queue_clear();
    18. return 0;
    19. }

    测试结果

    思维导图

  • 相关阅读:
    医学图像分类 神经网络,神经网络和图神经网络
    百度智能小程序源码系统:打造极致用户体验的关键 带完整搭建教程
    通过AOP实现全局日志打印
    Canonical Address
    PMP每日一练 | 考试不迷路-11.19(包含敏捷+多选)
    2023-10-20 LeetCode每日一题(根据规则将箱子分类)
    JavaWeb前端框架VUE和Element组件详解
    Let‘s Encrypt && acme
    Delphi 高精度计时
    沉睡者IT - 抖音中视频计划赚钱项目初级教程
  • 原文地址:https://blog.csdn.net/m0_64549633/article/details/132779455