宜章教育局官网:zhanzhanC语言

来源:百度文库 编辑:神马品牌网 时间:2024/04/26 16:50:05
Status Push ( SqStack &S , SElemType e ) //插入元素e为新的栈顶元素
{
if ( S.top - S.base >= S.stacksize ) //栈满,追加存储空间
{
S.base = ( ElemType * ) realloc ( S.base , ( S.stacksize + STACKINCREMENT ) * sizeof ( ElemType )) ;
if ( !S.base )
exit ( OVERFLOW ) ; //存储分配失败
***********************************************下面一行不懂
S.top = S.base + S.stacksize ;
S.stacksize += STACKINCREMENT ;
}
*S.top++ = e ;
return OK ;
}//Push

S.top = S.base + S.stacksize ;不懂是什么意思

如果元素是一个一个加的话,一旦栈满必定是 s.top - s.base == s.stacksize. 再分配新空间的时候,要保证栈顶指针s.top还要在栈顶
由于realloc,s.base的地址会改变,所以要对s.top重新设置