顺序栈就是采用顺序存储的栈。
-
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
-
xxxx( )
A. xxx
B. XX
C. Xx
D. xX查看解析
答案:x
-- 完 --