关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
2008-04-10 02:33
597 查看
在我的书中有一个栈的设计,有人对此提出质疑,认为栈的弹出函数应该设计两个返回值,一个表示弹出的数据,
另一个表示栈是否为空。他的理由是当栈中如果压入一个空指针时,返回值是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;
}
另一个表示栈是否为空。他的理由是当栈中如果压入一个空指针时,返回值是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;
}
相关文章推荐
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空
- 7.2 设计一个点类,其中包含一对坐标点数据成员、一个求两个点之间距离的友元函 数 dist 和显示坐标点的成员函数,并用数据进行测试。
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
- 设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p
- 设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p