引入
上一节,我们了解了栈的基本信息,知道了栈的各种特性,并且试着初始化了一个空栈。今天我们就来看看,如何将数据存入栈中。
入栈操作
入栈,我们有称之为压栈,简单来说就是向栈中存放数据。
入栈从栈顶进行。- 每压入一个数据,top 的指针就要+1
- 直到栈满了为止
代码实现
#define StackSize 100 //首先设置一个容量
//这里需要注意,实参的 s 需要先创建内存空间
void push(struct Stack *s,int data){
//下面开始判断栈是否满了,用头部-底部,如果距离为最大容量,就是满了
if(s->top - s->base >= s->StackSize){
//给底部赋值一个新的最大容量,为什么是底部?因为那是起始地址
s->base=(int *)realloc(s->base, (s->StackSize+10)*sizeof(LEN));
//顶部等于新底部+最大容量,就是顶部
s->top=s->base+s->StackSize;
//最大容量记得增加
s->StackSize=s->StackSize+10;
}
//下面这两个才是实际的压栈
*(s->top)=data; //顶部的地址的值赋值为传递进来的形参
s->top++; //顶部向后移动一位
}


