1.1 栈和队的基本概念
1.1.1 栈的基本概念
- 栈的定义
栈是只能在一段进行数据插入和删除的线性表。允许进行数据插入和删除的一端称为栈顶(top),栈顶由一个成为栈顶指针的位置指示器来表示,是动态变化的。表的另一端成为栈底,是固定不变的。插入数据和删除数据被称为入栈和出栈。
2. 栈的特点
栈的特点是先进后出。栈的数据形态就好比是叠放成一列的盘子,最先放入的在底端,最后放入的在顶端,拿取时也是后放入的先被拿出。
3. 栈的存储结构
可用顺序表和链表来存储,即按照存储结构的不同,分为顺序栈和链表栈。
4. 栈的数学性质
当n个元素以某种顺序进栈,并且可以在任意时刻出栈(在满足先进先出的前提下),所获得的元素排列的数目N恰好满足函数Catalan() 的计算。
1.2 栈的储存结构、算法和应用
1.2.1栈的结构体定义
1. 顺序栈的定义
typedef struct
{
int data[MaxSize]; //MaxSize为已被定义的const常量;
int top; //栈顶指针
}sqStack;
2. 链栈节点定义
typedef struct LNode
{
int data; // 数据域
struct LNode *next //指针域
}LNode;