1. 梗概:

  1. 栈顶输入数据
  2. 栈顶输出数据
  3. 特点:
    1. 输出顺序与输入顺序相反

2. 实际运用经验:

  1. 栈的空间不会太大

3. 栈在c语言的实现:

有两种存储结构:

  1. 顺序栈
    1. 完整的顺序栈
    2. 简化版的顺序栈
  2. 链栈

3.1. 完整顺序栈

3.1.1. c语言顺序栈定义:

梗概:

  1. top指示器
    1. 用来动态指示栈顶元素在顺序栈中的位置
    2. 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. 说明:

  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. 说明:

  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. 说明:

  1. 栈为空返回假, 否则为真
  2. 把栈顶元素取出放在指定的地址上
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():

删除数组的最后一个元素并返回删除的元素。