• c++day6


    栈类实现成模板类

    1. #include
    2. using namespace std;
    3. template <typename T>
    4. class Mystack
    5. {
    6. private:
    7. T *ptr;
    8. int size;
    9. int top;
    10. public:
    11. //无参构造函数
    12. Mystack():ptr(new T[10]),top(-1){};
    13. //有参构造函数
    14. Mystack(int s)
    15. {
    16. ptr=new T[size];
    17. size=s;
    18. top=-1;
    19. cout<<"有参构造函数"<
    20. }
    21. //析构函数
    22. ~Mystack()
    23. {
    24. delete []ptr;
    25. cout<<"析构函数"<
    26. }
    27. //拷贝赋值函数
    28. Mystack&operator = (const Mystack&other)
    29. {
    30. if(this == &other)
    31. {
    32. return *this;
    33. }
    34. delete []ptr;
    35. return strncat(this->ptr,&other.ptr,size);
    36. }
    37. //判空
    38. bool empty()
    39. {
    40. return top == -1;
    41. }
    42. //判满
    43. bool full()
    44. {
    45. return top== size-1;
    46. }
    47. //获取大小
    48. int getsize()
    49. {
    50. return top+1;
    51. }
    52. //入栈
    53. int push(T pos)
    54. {
    55. if(top == size -1)
    56. {
    57. return -1;
    58. }
    59. ptr[++top]= pos;
    60. return 0;
    61. }
    62. //出栈
    63. void pop()
    64. {
    65. if(top ==-1)
    66. {
    67. return;
    68. }
    69. top--;
    70. }
    71. //获取栈顶元素
    72. T& gettop()
    73. {
    74. return ptr[top];
    75. }
    76. //遍历打印
    77. void show()
    78. {
    79. if(top == -1)
    80. return;
    81. for(int i=0;i<=top;i++)
    82. {
    83. cout<" ";
    84. }
    85. cout<
    86. }
    87. };
    88. int main()
    89. {
    90. Mystack<int> m1(10);
    91. m1.push(5);
    92. m1.push(9);
    93. m1.show();
    94. Mystack<double> m2(10);
    95. m2.push(2.3);
    96. m2.push(6.9);
    97. m2.show();
    98. return 0;
    99. }

     队列类实现成模板类

    1. #include
    2. using namespace std;
    3. template<typename T>
    4. class Queue
    5. {
    6. private:
    7. int size; //队列大小
    8. int front; //队头
    9. int rear; //队尾
    10. T *ptr; //队列的首地址
    11. public:
    12. //无参构造
    13. Queue(){};
    14. //有参构造
    15. Queue(int s)
    16. {
    17. size=s;
    18. ptr=new T[size];
    19. front=0;
    20. rear=0;
    21. cout<<"有参构造"<
    22. }
    23. //析构函数
    24. ~Queue()
    25. {
    26. delete []ptr;
    27. cout<<"析构函数"<
    28. };
    29. //拷贝赋值函数
    30. Queue &operator = (const Queue &other)
    31. {
    32. if(this == &other)
    33. {
    34. return *this;
    35. }
    36. delete []ptr;
    37. return strncat(this->ptr,&other.ptr,size);
    38. }
    39. bool empty()
    40. {
    41. return front == -1 && rear == -1;
    42. }
    43. bool full()
    44. {
    45. return (rear + 1) % size == front;
    46. }
    47. int get_size()
    48. {
    49. if (empty()) // 如果队列为空
    50. {
    51. return 0; // 返回队列大小为0
    52. }
    53. if (front <= rear) // 如果队头位置小于等于队尾位置
    54. {
    55. return rear - front + 1; // 返回队列大小为队尾位置减去队头位置再加1
    56. }
    57. else
    58. {
    59. return size - front + rear + 1; // 返回队列大小为队列容量减去队头位置再加上队尾位置再加1
    60. }
    61. }
    62. int push(T data)
    63. {
    64. if(full())
    65. {
    66. return -1;
    67. }
    68. ptr[rear] = data;
    69. rear = (rear +1)%size;
    70. return 0;
    71. }
    72. int pop()
    73. {
    74. if(empty())
    75. {
    76. return -1;
    77. }
    78. front = (front +1)%size;
    79. return 0;
    80. }
    81. void show()
    82. {
    83. if(empty())
    84. {
    85. return;
    86. }
    87. for(int i=front;i!=rear;i=(i+1)%size)
    88. {
    89. cout<
    90. }
    91. }
    92. };
    93. int main()
    94. {
    95. Queue<int> q1(10);
    96. q1.push(5);
    97. q1.push(6);
    98. q1.get_size();
    99. q1.show();
    100. Queue<double> q2(10);
    101. q2.push(5.5);
    102. q2.push(8.5);
    103. q2.show();
    104. return 0;
    105. }

     

     

  • 相关阅读:
    前后端分离项目,vue+uni-app+php+mysql电影院售票系统设计与实现(H5移动项目)
    2021美亚团队赛复盘
    STM32 寄存器配置笔记——GPIO配置输出
    【C++】map,set简单操作的封装实现(利用红黑树)
    双周赛116(模拟、贪心、记忆化搜索==> 动态规划、线段树)
    解密数仓的SQL ON ANYWHERE技术
    顺序表(下)
    短视频矩阵系统源代码开发|技术源代码部署/OEM贴牌搭建
    微信小程序 movable-area 区域拖动动态组件演示
    【Spring】Spring Bean的4种依赖注入方式
  • 原文地址:https://blog.csdn.net/wdc857/article/details/132864153