文章目录 栈的基本概念 栈的基本操作 卡特兰数 顺序栈的实现 1. 顺序栈的结构体:SqStack 2. 顺序栈的初始化 :InitStack(SqStack &S) 3. 入栈和判满 :Push(SqStack &S, ElemType x) 4. 出栈和判空:Pop(SqStack &x, ElemType &x) 5. 读取栈顶元素 :GetTop(SqStack S, ElemType &x) 6.【混淆点】另一种实现方法:当初始化top=0时 共享栈 (两个栈共享同一片空间):ShStack 栈的链式存储实现【即链栈】 1. 链栈的结构体【自己定义的】 2. 链栈的初始化 :InitStack(StackLinkList &L) 3. 判断栈是否为空:isEmpty(StackLinkList &L) 4. 入栈【就是头插法】:pushStack(StackLinkList &L,ElemType x) 5. 出栈:popStack(StackLinkList &L, int &x) 栈的基本概念 栈(Stack)是只允许在一端进行插入或删除操作的线性表 栈顶:允许进行插入和删除的一端 (最上面的为栈顶元素)。 栈底:不允许进行插入和删除的一端 (最下面的为栈底元素)。 空栈:不含任何元素的空表。 特点:后进先出(后进栈的元素先出栈)、LIFO(Last In First Out)。 缺点:栈的大小不可变,解决方法:共享栈。 栈的基本操作 卡特兰数