• c++day6---9.13


     思维导图:

    改变类型只需将选择功能函数中的Zhan z;中的double改为相对的类型:

    栈: 

     头文件:

    1. #ifndef ZHAN_H
    2. #define ZHAN_H
    3. #include
    4. using namespace std;
    5. template<typename T>
    6. class Zhan
    7. {
    8. private:
    9. T *zhan;//存放栈中的数据
    10. int N;//栈空间
    11. int top;//栈顶
    12. public:
    13. //构造函数设置空间为10
    14. Zhan();
    15. //析构函数
    16. ~Zhan();
    17. Zhan(const Zhan &other);
    18. //清空栈
    19. void clear();
    20. //是否栈空
    21. int empty();
    22. //是否栈满
    23. int full();
    24. //获取栈顶元素
    25. void top_data();
    26. //进栈
    27. void into();
    28. //出栈
    29. int out();
    30. //栈的大小
    31. void len();
    32. void show();
    33. };
    34. //选择功能函数
    35. void choose();
    36. #endif // ZHAN_H

    功能文件:

    1. #include"zhan.h"
    2. //构造函数
    3. template <typename T>
    4. Zhan::Zhan()
    5. {
    6. N=10;
    7. zhan=new T[N];//分配栈空间
    8. this->top=-1;//初始化栈顶
    9. }
    10. //析构函数
    11. template <typename T>
    12. Zhan::~Zhan()
    13. {
    14. delete zhan;
    15. }
    16. //拷贝构造
    17. template <typename T>
    18. Zhan::Zhan(const Zhan &other)
    19. {
    20. zhan=new T(*other.zhan);
    21. N=other.N;
    22. top=other.top;
    23. }
    24. //清空栈
    25. template <typename T>
    26. void Zhan::clear()
    27. {
    28. this->top=-1;
    29. cout<<"清空成功"<
    30. }
    31. //是否栈空
    32. template <typename T>
    33. int Zhan::empty()
    34. {
    35. return (this->top==-1)?1:0;
    36. }
    37. //是否栈满
    38. template <typename T>
    39. int Zhan::full()
    40. {
    41. return (this->top==N-1)?1:0;
    42. }
    43. //获取栈顶元素
    44. template <typename T>
    45. void Zhan::top_data()
    46. {
    47. if(empty())
    48. return;
    49. else
    50. {
    51. int a=0;
    52. a=this->top;
    53. cout<<"栈顶元素为:"<
    54. }
    55. }
    56. //进栈
    57. template <typename T>
    58. void Zhan::into()
    59. {
    60. if(full())
    61. return;
    62. else
    63. {
    64. T x;
    65. cout<<"请输入入栈元素:";
    66. cin>>x;
    67. while(getchar()!=10);
    68. zhan[++(this->top)]=x;
    69. cout<"入栈成功"<
    70. }
    71. }
    72. //出栈
    73. template <typename T>
    74. int Zhan::out()
    75. {
    76. if(empty())
    77. return 0;
    78. else
    79. return zhan[(this->top)--];
    80. }
    81. //栈的大小
    82. template <typename T>
    83. void Zhan::len()
    84. {
    85. T a=top;
    86. a+=1;
    87. cout<<"现在栈的大小为:"<
    88. }
    89. template <typename T>
    90. void Zhan::show()
    91. {
    92. cout<<"现在栈元素为:";
    93. T a=this->top;
    94. for(int i=0;i<=a;i++)
    95. {
    96. cout<" ";
    97. }
    98. cout<
    99. }
    100. //选择功能函数
    101. void choose()
    102. {
    103. Zhan<double> z;
    104. int i=0;
    105. while(1)
    106. {
    107. system("CLS");
    108. z.show();
    109. cout<<"******1.入栈***********"<
    110. cout<<"******2.出栈***********"<
    111. cout<<"******3.清空栈*********"<
    112. cout<<"******4.栈顶元素********"<
    113. cout<<"******5.栈的大小********"<
    114. cout<<"******6.退出********"<
    115. cout<<"请选择功能:";
    116. cin>>i;
    117. while(getchar()!=10);
    118. switch(i)
    119. {
    120. case 1:
    121. z.into();
    122. break;
    123. case 2:
    124. z.out();
    125. break;
    126. case 3:
    127. z.clear();
    128. break;
    129. case 4:
    130. z.top_data();
    131. break;
    132. case 5:
    133. z.len();
    134. break;
    135. case 6:
    136. return;
    137. break;
    138. default:
    139. cout<<"输入错误,请重新输入"<
    140. break;
    141. }
    142. cout<<"请输入任意字符重新选择:";
    143. getchar();
    144. }
    145. }

    测试文件:

    1. #include"zhan.h"
    2. int main()
    3. {
    4. choose();
    5. return 0;
    6. }

    队列:

     头文件:

    1. #ifndef DL_H
    2. #define DL_H
    3. #include
    4. using namespace std;
    5. template<typename T>
    6. class Duilie
    7. {
    8. private:
    9. T *duilie;//存放栈中的数据
    10. int N;//队列空间
    11. int top;//队列头
    12. int tail;//队列尾
    13. public:
    14. //构造函数设置空间为10
    15. Duilie();
    16. //析构函数
    17. ~Duilie();
    18. //拷贝构造
    19. Duilie(const Duilie &other);
    20. //清空队列
    21. void clear();
    22. //是否队列空
    23. int empty();
    24. //是否队列满
    25. int full();
    26. //进队列
    27. void into();
    28. //出队列
    29. int out();
    30. //队列的大小
    31. void len();
    32. void show();
    33. };
    34. void choose();
    35. #endif // DL_H

    功能文件:

    1. #include"dl.h"
    2. template <typename T>
    3. Duilie::Duilie()
    4. {
    5. N=10;
    6. duilie=new T[N];//分配队列空间
    7. this->top=0;//初始化队列头尾
    8. this->tail=0;
    9. }
    10. //析构函数
    11. template <typename T>
    12. Duilie::~Duilie()
    13. {
    14. delete duilie;
    15. }
    16. //拷贝构造
    17. template <typename T>
    18. Duilie::Duilie(const Duilie &other)
    19. {
    20. duilie=new T(*other.duilie);
    21. N=other.N;
    22. top=other.top;
    23. tail=other.tail;
    24. }
    25. //清空队列
    26. template <typename T>
    27. void Duilie::clear()
    28. {
    29. for(int i=this->top;i!=this->tail;i=(i+1)%N)
    30. {
    31. duilie[i]=0;
    32. }
    33. this->tail=this->top=0;
    34. cout<<"清空成功"<
    35. }
    36. //是否队列空
    37. template <typename T>
    38. int Duilie::empty()
    39. {
    40. return (this->top==this->tail)?1:0;
    41. }
    42. //是否队列满
    43. template <typename T>
    44. int Duilie::full()
    45. {
    46. int a=this->tail;
    47. return ((a+1)%N==this->top)?1:0;
    48. }
    49. //进队列
    50. template <typename T>
    51. void Duilie::into()
    52. {
    53. if(full())
    54. return;
    55. else
    56. {
    57. T x;
    58. int a=this->tail;
    59. cout<<"请输入入队列的元素:";
    60. cin>>x;
    61. while(getchar()!=10);
    62. duilie[a]=x;
    63. this->tail=(this->tail+1)%N;
    64. cout<"入队列成功"<
    65. }
    66. }
    67. //出队列
    68. template <typename T>
    69. int Duilie::out()
    70. {
    71. if(empty())
    72. return 0;
    73. else
    74. {
    75. cout<this->top]<<"出队列成功"<
    76. this->top=(this->top+1)%N;
    77. return 1;
    78. }
    79. }
    80. //队列的大小
    81. template <typename T>
    82. void Duilie::len()
    83. {
    84. int a=0;
    85. a=(this->tail+N-this->top)%N;
    86. cout<<"现在队列的大小为:"<
    87. }
    88. template <typename T>
    89. void Duilie::show()
    90. {
    91. int a=this->top,b=this->tail;
    92. cout<<"现在队列从头到尾元素为:";
    93. for(int i=a;i!=b;i=(i+1)%N)
    94. {
    95. cout<" ";
    96. }
    97. cout<
    98. }
    99. //选择功能函数
    100. void choose()
    101. {
    102. int i=0;
    103. Duilie<double> d;
    104. while(1)
    105. {
    106. system("CLS");
    107. d.show();
    108. cout<<"******1.入队列***********"<
    109. cout<<"******2.出队列***********"<
    110. cout<<"******3.清空队列*********"<
    111. cout<<"******4.队列的大小********"<
    112. cout<<"******5.退出********"<
    113. cout<<"请选择功能:";
    114. cin>>i;
    115. while(getchar()!=10);
    116. switch(i)
    117. {
    118. case 1:
    119. d.into();
    120. break;
    121. case 2:
    122. d.out();
    123. break;
    124. case 3:
    125. d.clear();
    126. break;
    127. case 4:
    128. d.len();
    129. break;
    130. case 5:
    131. return;
    132. break;
    133. default:
    134. cout<<"输入错误,请重新输入"<
    135. break;
    136. }
    137. cout<<"请输入任意字符重新选择:";
    138. getchar();
    139. }
    140. }

    测试文件:

    1. #include"dl.h"
    2. int main()
    3. {
    4. choose();
    5. return 0;
    6. }

  • 相关阅读:
    工业智能网关BL110应用之九: 主要接口
    学习笔记 谷粒03 前端
    面向对象实验五虚函数
    ThreeJS-截屏下载pdf或者图片时白屏
    最新ChatGPT商业运营系统源码+支持GPT4/支持ai绘画+支持Midjourney绘画
    五分钟k8s入门到实战-应用配置
    vs code git问题:文件明明已加入忽略文件中,还是出现
    SpringCloud01
    【STM32快速上手】点灯只需4步
    信奥中的数学:斐波那契数列
  • 原文地址:https://blog.csdn.net/yjh666jhy/article/details/132862083