Status InitStack(SqStack &s); //构造一个空栈
Status DestroyStack(SqStack &s); //销毁栈
Status ClearStack(SqStack &s);//清空栈
Status GetTop(SqStack s,SElemType &e);//取得栈顶元素
Status Push(SqStack &s,SElemType &e);//入栈
Status Pop(SqStack &s,SElemType &e); //出栈
Status InitStack(SqStack &s)
{
s.base=(SElemType *)malloc(sizeof(SElemType)*STACK_INIT_SIZE);
if(!s.base)
exit(OVERFLOW);
s.stacksize=STACK_INIT_SIZE;
s.top=s.base;
return OK;
}
Status DestroyStack(SqStack &s)
{
if(!s.base)
return ERROR;
free(s.base);
SqStack *p=&s;
free(p);
return OK;
}
Status ClearStack(SqStack &s)
{
if(!s.base)
return ERROR;
s.top=s.base;
return OK;
}
Status GetTop(SqStack s,SElemType &e)
{
if(StackEmpty(s))
return ERROR;
e=*--s.top;
return OK;
}
Status Push(SqStack &s,SElemType &e)
{
if(!s.base)
return ERROR;
if(StackLength(s)==s.stacksize)
{
s.base=(SElemType *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!s.base)
exit(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
return OK;
}
Status Pop(SqStack &s,SElemType &e)
{
if(StackEmpty(s))
return ERROR;
e=*--s.top;
return OK;
}
上面这些函数的参数中都有"&",不清楚是引用调用还是取地址(感觉是取地址),本人对这方面(用参数返回函数中值问题)比较迷惑,希望达人能给点这方面全面的资料(最好具体点),解释什么的,在这里先谢谢了!