Skip to content

Latest commit

 

History

History
144 lines (105 loc) · 2.54 KB

3.1.2 栈的顺序存储结构.md

File metadata and controls

144 lines (105 loc) · 2.54 KB


3.1.2 栈的顺序存储结构


  顺序栈就是采用顺序存储的栈。

  • C 语言描述:

    #define MaxSize 50
    typedef struct {
        ElemType data[MaxSize];
        int top;
    } SqStack;
  • 顺序栈的三种结论:

    • 栈空条件:S.top == -1

    • 栈长计算:S.top + 1

    • 栈满条件:S.top == MaxSize-1


  • 顺序栈的基本操作

    • 初始化

      void InitStack(SqStack &S) {
          S.top == -1;
      }
    • 判断栈空

      bool StackEmpty(SqStack S) {
          if(S.top == -1)
              return true;
          else
              return false;
      }
    • 压栈/进栈

      bool Push(SqStack &S, ElemType x) {
          if(S.top == MaxSize-1)
              return false;
          S.data[++S.top] = x;
          return true;
      }
    • 弹栈/出栈

      bool Pop(SqStack &S, ElemType &x) {
          if(S.top == -1)
              return false;
          x = S.data[S.top--];
          return true
      }

      注意:原本栈顶元素地址上的值并没有被释放掉,只是从栈的逻辑结构上“删除”掉了

    • 读出栈顶元素

      bool GetTop(SqStack S, ElemType &x) {
          if(S.top == -1)
              return false;
          x = S.data[S.top]
          return true;
      }

  共享栈: 将两个栈底设置在共享空间的两端,栈顶向空间中间延伸。

  • 判空

    • 0 号栈:top == -1

    • 1 号栈:top == MaxSize

  • 栈满:top1-top0 == 1

  • 优点: 存取时间复杂度仍为 O(1),且空间利用更加有效。


💡 题型

  xxx

单项选择题

  1. xxxx( )

    A. xxx
    B. XX
    C. Xx
    D. xX

    查看解析

    答案:x


-- 完 --