• C++&QT day3


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

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

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

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

    1:

    1. #include
    2. #define MAX 128
    3. using namespace std;
    4. class Stack_s
    5. {
    6. private:
    7. int *p=new int[MAX];//栈的数组
    8. int top;//记录栈顶的变量
    9. public:
    10. //构造函数
    11. Stack_s(int t=-1)
    12. {
    13. top=t;
    14. cout<<"无参构造函数"<
    15. }
    16. //析构函数
    17. ~Stack_s()
    18. {
    19. cout<<"Stack::析构函数"<
    20. }
    21. //拷贝构造函数
    22. Stack_s(const Stack_s &other):p(other.p),top(other.top)
    23. {
    24. cout<<"拷贝构造函数"<
    25. }
    26. //入栈
    27. int stack_push(int e)
    28. {
    29. if(stack_full())
    30. {
    31. cout<<"入栈失败"<
    32. return -1;
    33. }
    34. top++;
    35. p[top]=e;
    36. cout<<"入栈成功"<
    37. return 0;
    38. }
    39. //出栈
    40. int stack_pop()
    41. {
    42. if(stack_empty())
    43. {
    44. cout<<"出栈失败"<
    45. return -1;
    46. }
    47. int e=p[top];
    48. top--;
    49. cout<" 出栈成功"<
    50. return 0;
    51. }
    52. //清空栈
    53. int stack_delete()
    54. {
    55. while(top!=-1)
    56. {
    57. stack_pop();
    58. }
    59. delete [] p;
    60. p=nullptr;
    61. cout<<"清空栈成功"<
    62. return 0;
    63. }
    64. //判空
    65. bool stack_empty()
    66. {
    67. if(top==-1)
    68. {
    69. cout<<"栈空"<
    70. return 1;
    71. }
    72. return 0;
    73. }
    74. //判满
    75. bool stack_full()
    76. {
    77. if(top==MAX-1)
    78. {
    79. cout<<"栈满了"<
    80. return 1;
    81. }
    82. return 0;
    83. return 0;
    84. }
    85. //获取栈顶元素
    86. int stack_gettop()
    87. {
    88. cout<<"栈顶元素是:"<
    89. return 0;
    90. }
    91. //栈的大小
    92. void stack_getsize()
    93. {
    94. cout<<"栈的大小为:"<1<
    95. }
    96. void show(int i)
    97. {
    98. cout<" ";
    99. }
    100. };
    101. int main()
    102. {
    103. Stack_s s1;
    104. int e;
    105. int s;
    106. s1.stack_empty();
    107. cout<<"请输入要入栈的个数:";
    108. cin>>s;
    109. for(int i=0;i
    110. {
    111. cout<<"请输入要入栈的元素:";
    112. cin>>e;
    113. s1.stack_push(e);
    114. }
    115. s1.stack_gettop();
    116. s1.stack_getsize();
    117. for(int i=0;i
    118. {
    119. s1.show(i);
    120. }
    121. cout<
    122. s1.stack_delete();
    123. return 0;
    124. }

    2:

    1. #include
    2. #define MAX 128
    3. using namespace std;
    4. class Queue_q
    5. {
    6. private:
    7. int *p=new int[MAX];//队列的数组
    8. int tail;//记录队尾元素
    9. int head;//记录对头元素
    10. public:
    11. //构造函数
    12. Queue_q(int t=0)
    13. {
    14. head=t;
    15. tail=t;
    16. cout<<"无参构造函数"<
    17. }
    18. //析构函数
    19. ~Queue_q()
    20. {
    21. cout<<"Stack::析构函数"<
    22. }
    23. //拷贝构造函数
    24. Queue_q(const Queue_q &other):p(other.p),tail(other.tail),head(other.head)
    25. {
    26. cout<<"拷贝构造函数"<
    27. }
    28. //入队
    29. int queue_push(int e)
    30. {
    31. if(queue_full())
    32. {
    33. cout<<"入队失败"<
    34. return -1;
    35. }
    36. p[tail]=e;
    37. tail++;
    38. cout<<"入队成功"<
    39. return 0;
    40. }
    41. //出队
    42. int queue_pop()
    43. {
    44. if(queue_empty())
    45. {
    46. cout<<"出队失败"<
    47. return -1;
    48. }
    49. int e=p[head];
    50. head=(head+1)%MAX;
    51. cout<" 出队成功"<
    52. return 0;
    53. }
    54. //清空队列
    55. int queue_delete()
    56. {
    57. while(head!=tail)
    58. {
    59. queue_pop();
    60. }
    61. delete [] p;
    62. p=nullptr;
    63. cout<<"清空队列成功"<
    64. return 0;
    65. }
    66. //判空
    67. bool queue_empty()
    68. {
    69. if(head==tail)
    70. {
    71. cout<<"队列空"<
    72. return 1;
    73. }
    74. return 0;
    75. }
    76. //判满
    77. bool queue_full()
    78. {
    79. if((tail+1)==0)
    80. {
    81. cout<<"队列满了"<
    82. return 1;
    83. }
    84. return 0;
    85. }
    86. //队列的大小
    87. void queue_getsize()
    88. {
    89. int size;
    90. size=(tail-head+MAX)%MAX;
    91. cout<<"队的大小为:"<
    92. }
    93. void show(int i)
    94. {
    95. cout<" ";
    96. }
    97. };
    98. int main()
    99. {
    100. Queue_q q1;
    101. int e;
    102. int s;
    103. q1.queue_empty();
    104. cout<<"请输入要入队的个数:";
    105. cin>>s;
    106. for(int i=0;i
    107. {
    108. cout<<"请输入要入队的元素:";
    109. cin>>e;
    110. q1.queue_push(e);
    111. }
    112. q1.queue_getsize();
    113. for(int i=0;i
    114. {
    115. q1.show(i);
    116. }
    117. cout<
    118. q1.queue_delete();
    119. return 0;
    120. }

    思维导图:

  • 相关阅读:
    多标签分类任务-服装分类
    java 动态编译运行
    Javascript中字符串取数字
    Android动态获取手机是否是充电状态
    docker安装mysql
    【零基础学Java】第二十一篇 集合1(Collection,ArrayList,LinkedList,Vector)
    AppScan实战——web扫描
    IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Maven依赖管理,版本号管理,继承和聚合
    pybind11
    S-2K2001 pmon调试
  • 原文地址:https://blog.csdn.net/m0_59031281/article/details/132767368