栈的结构特点:先进后出FILO,访问受限的线性表、插入和删除数据只能在一端进行,这一端为栈顶 ,其他位置不能操作
栈的应用:括号匹配、二叉树的非递归遍历
一、顺序栈:以顺序表的形式来实现栈的特性,内存连续,用数组处理
二、链栈:以链表的形式来实现栈的特性,内存不连续,用链表处理
顺序栈:顺序表尾插和尾删都是O(1),所以栈顶设在尾部
1、用栈顶指针(int top)来存储每个元素的下标,通过下表来标识唯一的内存单元
2、栈的增删改查:(1)增加(压栈):插入一个元素top++
(2)删除(出栈):删除一个元素,top--
(3)查找:每次只能获取栈顶元素
3、栈的结构:
typedef int ElemType;
#define STACK_SIZE 10;//宏定义,定义栈的大小
typedef struct Stack
{
ElemType data[STACK_SIZE];//栈存储数据的空间
int top;//栈顶指针,存放下标
}