if(0==s->size_of_stack)/*栈空*/
return false;
temp=s->top->prior;
(s->size_of_stack)--;
if( null != elem)/*如果参数为null,则直接弹出*/
gettop(s,elem);
freenode( &(s->top));
s->top = temp;
return true;
}
bool clearstack(stackhandle s)
{/*把s置为空栈*/
assert( null !=s);
while(0!=s->size_of_stack){
pop(s,null);
}
return true;
}
bool destroystack(stackhandle * s)
{/*销毁栈s*/
assert(null !=s);
assert(null != *s);
if(0!=(*s)->size_of_stack)
clearstack(*s);
free( *s);
*s=null;
return true;
}
bool stackempty(stackhandle s)
{/*栈空?*/
assert( null !=s );
if(0==s->size_of_stack)return true;
return false;
}
int stacklength(stackhandle s)
{/*栈长*/
assert(null !=s);
return s->size_of_stack;
}