在我的书中有一个栈的设计,有人对此提出质疑,认为栈的弹出函数应该设计两个返回值,一个表示弹出的数据,
另一个表示栈是否为空。他的理由是当栈中如果压入一个空指针时,返回值是NULL时并不表示栈为空。
老实说我对栈的弹出函数设计两个返回值是不赞同的,这样会严重影响效率。欢迎大家讨论。
我的书中栈的弹出函数如下:
/**栈的弹出函数,弹出栈顶数据,
弹出的数据需要调用者自行释放掉。
@paramSTACK * pStack - 栈指针
@returnvoid * - 成功返回栈顶数据,栈为空则返回NULL
*/
void * Stack_Pop( STACK * pStack )
{
void*pData;
if ( pStack == NULL || pStack->uTop == 0 )
{
return NULL;
}
pStack->uTop -= 1;
pData = pStack->ppBase[pStack->uTop];
return pData;
}