1. #define ElemType int
    2. #define MaxSize 50
    3. #include"SqStack.h"
    4. int main(){
    5. int i;
    6. SqStack * S;
    7. ElemType e;
    8. ElemType a[10] = {10,9,8,7,6,5,4,3,2,1};
    9. InitList(&S);// 这里一定要有初始化
    10. for (i = 0; i < 10; i++)
    11. {
    12. Push(&S,a[i]);
    13. }
    14. for (i = 0; i < 10; i++)
    15. {
    16. Pop(&S,&e);
    17. printf("%d\t",e);
    18. }
    19. printf("\n");
    20. return 0;
    21. }
    1. //顺序栈
    2. #include <stdlib.h>
    3. #include <stdio.h>
    4. typedef struct
    5. {
    6. ElemType data[MaxSize];
    7. int top;
    8. } SqStack;
    9. //1.初始化
    10. void InitList(SqStack **S)
    11. {
    12. (*S) = (SqStack *)malloc(sizeof(SqStack));
    13. (*S)->top = -1;
    14. }
    15. //2.销毁顺序表
    16. void DestroyList(SqStack **S)
    17. {
    18. free(*S);
    19. }
    20. //3.push
    21. int Push(SqStack **S, ElemType e)
    22. {
    23. if ((*S)->top == MaxSize - 1)
    24. {
    25. return 0;
    26. }
    27. (*S)->top++;
    28. (*S)->data[(*S)->top] = e;
    29. return 1;
    30. }
    31. //4.pop
    32. int Pop(SqStack ** S, ElemType *e)
    33. {
    34. if ((*S)->top == -1)
    35. {
    36. return 0;
    37. }
    38. *e = (*S)->data[(*S)->top];
    39. (*S)->top--;
    40. return 1;
    41. }
    42. //5.GetTop
    43. int GetTop(SqStack ** S,ElemType * e){
    44. if ((*S)->top == -1)
    45. {
    46. return 0;
    47. }
    48. *e = (*S)->data[(*S)->top];
    49. return 1;
    50. }