• 数据结构----顺序栈的操作


    1.顺序栈的存储结构
    1. typedef int SElemType;
    2. typedef int Status;
    3. typedef struct{
    4. SElemType *top,*base;//定义栈顶和栈底指针
    5. int stacksize;//定义栈的容量
    6. }SqStack;
    2.初始化栈
    1. Status InitStack(SqStack &S){//初始化一个空栈
    2. S.base=new SElemType[MAXSIZE];//为顺序栈动态分配一个最大容量为MAXSIZE的空间
    3. if(S.base==NULL) return ERROR;//判断存储是否分配成功
    4. S.top=S.base;//将top初始化为base,置为空栈
    5. S.stacksize=MAXSIZE;//stacksize置为最大容量MAXSIZE
    6. return OK;
    7. }
    3.入栈操作
    1. Status Push(SqStack &S,SElemType e){//入栈
    2. if(S.top-S.base==S.stacksize) return ERROR;//判断是否栈满
    3. *S.top=e;
    4. S.top++;
    5. return OK;
    6. }
    4.出栈操作
    1. Status Pop(SqStack &S,SElemType &e){//出栈
    2. if(S.top==S.base) return ERROR;//判断栈是否为空
    3. S.top--;
    4. e=*S.top;
    5. return OK;
    6. }
    5.遍历栈中元素
    1. Status PrintfStack(SqStack S){//遍历栈内的所有元素
    2. SElemType *p;
    3. p=S.base;
    4. printf("栈中的元素为:");
    5. while(p!=S.top){
    6. printf("%d ",*p);
    7. p++;
    8. }
    9. printf("\n");
    10. }
    6.获取栈顶元素
    1. SElemType GetTop(SqStack S){//获取栈顶元素
    2. if(S.top!=S.base)//当栈不为空时
    3. return *(S.top-1);
    4. }
    7.获取栈的长度
    1. int StackLength(SqStack S){//获取栈的长度
    2. int len=0;
    3. SElemType *s;
    4. s=S.base;//从栈底开始
    5. while(s!=S.top){
    6. len++;
    7. s++;
    8. }
    9. printf("栈的长度为:%d\n",len);
    10. }
    8.判断栈是否为空
    1. Status StackEmpty(SqStack S){//判断栈是否为空
    2. if(S.top==S.base) return ERROR;
    3. else
    4. return OK;
    5. }

    9.主程序代码

    1. #include
    2. #define MAXSIZE 100
    3. #define ERROR 0
    4. #define OK 1
    5. typedef int SElemType;
    6. typedef int Status;
    7. typedef struct{
    8. SElemType *top,*base;//定义栈顶和栈底指针
    9. int stacksize;//定义栈的容量
    10. }SqStack;
    11. Status InitStack(SqStack &S){//初始化一个空栈
    12. S.base=new SElemType[MAXSIZE];//为顺序栈动态分配一个最大容量为MAXSIZE的空间
    13. if(S.base==NULL) return ERROR;//判断存储是否分配成功
    14. S.top=S.base;//将top初始化为base,置为空栈
    15. S.stacksize=MAXSIZE;//stacksize置为最大容量MAXSIZE
    16. return OK;
    17. }
    18. Status Push(SqStack &S,SElemType e){//入栈
    19. if(S.top-S.base==S.stacksize) return ERROR;//判断是否栈满
    20. *S.top=e;
    21. S.top++;
    22. return OK;
    23. }
    24. Status Pop(SqStack &S,SElemType &e){//出栈
    25. if(S.top==S.base) return ERROR;//判断栈是否为空
    26. S.top--;
    27. e=*S.top;
    28. return OK;
    29. }
    30. Status PrintfStack(SqStack S){//遍历栈内的所有元素
    31. SElemType *p;
    32. p=S.base;
    33. printf("栈中的元素为:");
    34. while(p!=S.top){
    35. printf("%d ",*p);
    36. p++;
    37. }
    38. printf("\n");
    39. }
    40. SElemType GetTop(SqStack S){//获取栈顶元素
    41. if(S.top!=S.base)
    42. return *(S.top-1);
    43. }
    44. int StackLength(SqStack S){//获取栈的长度
    45. int len=0;
    46. SElemType *s;
    47. s=S.base;
    48. while(s!=S.top){
    49. len++;
    50. s++;
    51. }
    52. printf("栈的长度为:%d\n",len);
    53. }
    54. Status StackEmpty(SqStack S){//判断栈是否为空
    55. if(S.top==S.base) return ERROR;
    56. else
    57. return OK;
    58. }
    59. int main()
    60. {
    61. SqStack S;
    62. InitStack(S);
    63. int n;
    64. printf("请输入要入栈的元素个数:");
    65. scanf("%d",&n);
    66. printf("请输入要入栈的元素:");
    67. for(int i=0;i//将待入栈的元素依次存入栈中
    68. SElemType e;
    69. scanf("%d",&e);
    70. Push(S,e);
    71. }
    72. if(StackEmpty(S))
    73. printf("栈不为空!\n");
    74. else
    75. printf("栈为空!\n");
    76. int x=GetTop(S);
    77. printf("栈顶元素为:%d\n",x);
    78. StackLength(S);
    79. PrintfStack(S);
    80. printf("元素出栈:");
    81. for(int i=0;i
    82. SElemType e;
    83. Pop(S,e);
    84. printf("%d ",e);
    85. }
    86. printf("\n");
    87. if(StackEmpty(S))
    88. printf("栈不为空!\n");
    89. else
    90. printf("栈为空!\n");
    91. return 0;
    92. }

    运行结果

    分享一个网络上真正的巨人------冬泳怪鸽的一句话:“闲话终日有,不听自然无。”,笑梗不笑人,怪哥真男人,干就完了,加油,奥里给!!!

  • 相关阅读:
    开放之光——湖北电大搜题助力学习之旅
    docker安装oracle
    m基于16QAM的自适应波束形成matlab仿真
    用Python判断是否为闰年并计算生肖年
    从0到1搭建redis6.0.7续更~
    保护环GuardRing(基于IC617)
    Android 使用元数据
    AIGC创作系统ChatGPT源码,支持最新GPT-4-Turbo模型,支持DALL-E3文生图
    Android渲染一个列表的过程,并提供动态改变样式
    药品大数据公司都有哪些?
  • 原文地址:https://blog.csdn.net/2301_76828807/article/details/134359723