1.顺序存储实现栈
    image.png
    image.png
    image.png
    image.png
    通过栈顶来添加数据
    image.png
    image.png
    栈顶为空时,top=-1
    image.png

    1. #define MaxSize 50
    2. typedef int ElemType;
    3. typedef struct {
    4. ElemType data[MaxSize];//数组存放数据
    5. int top;//top就是数组下标,最初为-1,表示栈空,最多为MaxSize-1代表栈满
    6. }SqStack;
    7. //初始化栈
    8. void InitStack(SqStack &S) {
    9. S.top = -1;
    10. }
    11. //
    12. bool StackEmpty(SqStack S) {
    13. if (S.top == -1)
    14. return true;
    15. return false;
    16. }
    17. bool Push(SqStack &S,ElemType x) {
    18. if (S.top == MaxSize - 1)
    19. return false;//判断栈满了
    20. S.data[++S.top] = x;//也可以写成S.top++; S.data[S.top] = x;
    21. //为什么S.data[S.top]=x; ++S.top;不行
    22. return true;//返回true就是入栈成功
    23. }
    24. //实现栈,可以用数组,也可以用链表,这里使用数组(顺序存储)
    25. int main() {
    26. SqStack S;//先进后出FILO,后进先出LIFO
    27. bool flag;
    28. InitStack(S);
    29. flag = StackEmpty(S);
    30. if (flag) {
    31. printf("栈是空的");
    32. }
    33. Push(S,3);
    34. Push(S,4);
    35. Push(S,5);
    36. return 0;
    37. }

    放入3个数据后:image.png