1. 梗概:
- 栈顶输入数据
- 栈顶输出数据
- 特点:
- 输出顺序与输入顺序相反
2. 实际运用经验:
- 栈的空间不会太大
3. 栈在c语言的实现:
有两种存储结构:
- 顺序栈
- 完整的顺序栈
- 简化版的顺序栈
- 链栈
3.1. 完整顺序栈
3.1.1. c语言顺序栈定义:
梗概:
- top指示器
- 用来动态指示栈顶元素在顺序栈中的位置
- top=-1表示空栈 代码:
#define Stack_Size 64
typedef struct{
StackElementType elem[Stack_Size]; //elem式存放栈中元素的一维数组
int top; //top存放栈顶元素的下标
}SeqStack;3.1.2. 初始化顺序栈:
void InitStack(SeqStack* S)//传入将要放栈的地址
{
S->top=-1;
}3.1.3. 判断栈是否为空
int IsEmpty(SeqStack *S){
return(S->top==-1);
}3.1.4. 进栈:
3.1.4.1. 说明:
- 首先判断当前栈是否已满,满了就不进栈
3.1.4.2. 实现:
int Push(SeqStack *S,StackElementType x){
if(S->top==Stack_Size-1)return 0;
++S->top;
S->elem[S->top]=x;
return 1;
}3.1.5. 出栈:
3.1.5.1. 说明:
- 首先判断当前栈是否为空,空就不会取出
3.1.5.2. 实现:
int Pop(SeqStack *S, StackElementType *x){
if(S->top==-1)return(0);
*x=S->elem[S->top];
S->top--;
return(1);
}3.1.6. 读取栈顶元素:
3.1.6.1. 说明:
- 栈为空返回假, 否则为真
- 把栈顶元素取出放在指定的地址上
int GetTop(SeqStack* S, StackElementType* x){//指定要保存取出元素的地址
if(S->top==-1)return(0);
*x = S->elem[S->top];
return(1);
}3.2. 简化/简单顺序栈
3.2.1. 定义
int top=-1;
int *Stack=(int*)calloc(长度,sizeof(int));//注意:用完一定要free!3.2.2. 入栈/压栈
Stack[++top]=新元素;//根据需要先判定是否栈满3.2.3. 出栈/弹出
if(top!=-1){存放变量=Stack[top--]}3.2.4. 判空
if(top==-1)4. 栈在typescript(ts)中的实现:
4.1. 梗概:
用数组作为栈, 用Push()方法与Pop()方法
4.2. Push():
向数组的末尾添加一个或更多元素,并返回新的长度。
4.3. Pop():
删除数组的最后一个元素并返回删除的元素。