关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空

来源:互联网 发布:福利彩票 知乎 编辑:程序博客网 时间:2024/04/30 17:44

在我的书中有一个栈的设计,有人对此提出质疑,认为栈的弹出函数应该设计两个返回值,一个表示弹出的数据,

另一个表示栈是否为空。他的理由是当栈中如果压入一个空指针时,返回值是NULL时并不表示栈为空。

老实说我对栈的弹出函数设计两个返回值是不赞同的,这样会严重影响效率。欢迎大家讨论。

我的书中栈的弹出函数如下:

 /** 栈的弹出函数,弹出栈顶数据,
    弹出的数据需要调用者自行释放掉。

 @param STACK * pStack - 栈指针 
    @return void * - 成功返回栈顶数据,栈为空则返回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;
}

 

 




原创粉丝点击