求压栈操作注释

来源:百度知道 编辑:UC知道 时间:2024/06/06 04:35:51
Status Push(SqStack &S,SElenTape e)
{
if(S.top-S.base>=S.stacksize)
S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCEREMENT)*sizeof(ElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stack+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}
哪位高手帮忙写下注释啊?多谢啊^_^
顺便问下,第三行中S.base表示什么啊?是栈底指针吗?
*S.top++=e是什么意思啊?

Status Push(SqStack &S,ElemType e)
{
if(S.top-S.base>=S.stacksize) //如果栈顶指针减栈底指针大于栈的容量
S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCEREMENT)*sizeof(ElemType)); //重新为栈底指针开辟空间,长度为(S.stacksize+STACKINCEREMENT),并将原来的栈底指针的内容复制给新的栈底指针
if(!S.base)exit(OVERFLOW); //如果栈底指针为空,则以溢出的标志退出
S.top=S.base+S.stacksize; //算出栈顶指针的位置
S.stack+=STACKINCREMENT; //这句应该改为S.stacksize+=STACKINCREMENT; 重新计算新栈的大小
}
*S.top++=e; //栈顶向后移动一位,将e赋值给栈顶
return OK; //返回值
}