void StackPush(ST* ps,STDataType x)
{
assert(ps);
if(ps->top == ps->capacity)
{
//增容
int newcapacity = ps->capacity == 0?4:ps->capacity*2;
STDataType* tmp = realloc(ps->a,sizeof(STDataType)*newCapacity);
}
}
头插增容时,capacity的容量不够了,需要增容,新的空间赋给newcapacity,那为什么下边还要用结构体指针呢,newcapacity表示的增容是哪方面的意思呢
newcapacity
代表新的容量大小,用于增加栈的容量。结构体指针ps
用于访问和操作栈的相关信息,包括当前栈的容量ps->capacity
和栈顶指针ps->top
。realloc
函数重新分配内存空间,将原有栈的元素复制到新的内存空间中。这里使用了结构体指针ps
来获取原始栈的地址ps->a
,然后调用realloc
函数将其扩展到新的容量newcapacity
所需的大小。ps
用于操作和管理栈的整体信息,而newcapacity
则表示需要增加的新容量大小。你的代码不全或者不对,增容后,需要在ps里记录增容后的容量大小,以便下次不够时再增容;看capacity与top比较,应该是要记录到capacity中。