阅读目录
栈
1、栈的定义
栈是限定在表的同一端进行插入或删除操作的线性表。进行插入或删除操作的一端称为栈顶,另一端称为栈底。没有数据元素的栈称为空栈。插入数据元素的栈称为入栈 ,删除数据元素的栈称为出栈。
2、栈的运算特性:先进后出
3、基于栈结构的特点,在实际应用中,通常只会对栈执行以下两种操作:
向栈中添加元素,此过程被称为"进栈"(入栈或压栈);
从栈中提取出指定元素,此过程被称为"出栈"(或弹栈);
4、栈的基本运算如下:
- 初始化栈 initStack(S): 创建一个空栈
- 判断栈空 isEmpty(S): 当栈S为空栈返回True,否则返回false
- 入栈 Push(S,x): 将元素 x 加入栈顶,并更新栈顶指针
- 出栈 Pop(S): 将栈顶的元素从栈中删除,并更新栈顶指针
- 读取栈顶元素top(S):返回栈顶元素的值,但不修改栈顶指针
定义顺序栈:
typedef struct {
int *elem; //栈的存储区
int max; //栈的容量,即栈中最多能存放的元素个数
int top; //栈顶指针,就是线性表顺序存储结构的 length
}Stack;
约定top用于存放栈顶元素的位置,
top = -1表示空栈,
top=max-1表示栈满
入栈时 top 指针加1 ;出栈时 top减1
创建容量为n的空栈
int InitStack(Stack *S, int n) //创建容量为n的空栈
{
S->elem = (int *)malloc(n * sizeof(int)); //申请内存,存放n个,一个存放一个整数
if (S->elem == NULL) return -1; //返回空指针,则是申请不成功
S->max = n; //栈的容量为n
S->top = 0; //栈顶的位置
return 0;