`
lovnet
  • 浏览: 6877840 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

另一个表示栈是否为空。他的理由是当栈中如果压入一个空指针时,返回值是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;
}

分享到:
评论

相关推荐

    js弹出窗口返回值

    ### JS弹出窗口返回值详解 #### 一、前言 在前端开发中,经常会遇到需要弹出新窗口并从该窗口返回数据的情况。本文将详细介绍`window.opener`对象的使用方法及其应用场景,帮助开发者更好地理解如何实现弹窗与主...

    C#弹出窗口返回值,下载文件

    当你需要弹出一个子窗口并获取其结果时,可以创建一个新的`Form`实例,并通过事件处理或回调函数来传递数据。 1. 创建子窗口:首先,定义一个新的类继承自`Form`,在这个子窗口类中添加你需要的控件和业务逻辑。 ``...

    算术表达式的求值(栈的运用)课程设计

    - **定义**: `typedef struct` 定义了一个名为 `whstack` 的结构体,用于表示数据栈。 - **初始化**: `void INTinit(whstack *s)` 函数负责初始化数据栈。 - 分配初始内存空间 (`STACK_INIT_SIZE`)。 - 设置栈顶...

    C++描述的栈详解

    `Pop`函数在栈非空时弹出栈顶元素,若栈空则抛出“下溢”异常;`GetTop`函数返回栈顶元素但不删除;`Empty`函数检查栈是否为空,返回值为1表示空栈,0表示非空栈。 接下来是栈链的实现。栈链通常使用链表作为基础...

    Wincc中弹出对话框函数MessageBox参数以及应用

    ### Wincc中弹出对话框函数MessageBox参数及应用详解 #### 概述 在工业自动化领域,特别是使用西门子Wincc开发环境进行图形化用户界面设计时,弹出对话框(MessageBox)是非常常见的功能需求之一。通过调用`...

    函数调用时栈的变化[收集].pdf

    在函数b的执行过程中,栈空间的变化是动态的,函数b的局部变量和参数信息会被压栈和弹出。当函数b返回时,栈空间的变化也会发生,函数b的栈基址会被恢复,以便恢复原来的栈空间。 函数调用栈的变化是程序设计语言中...

    栈的应用 -- 括号匹配1

    判断栈是否为空的函数`empty()`检查top是否为0,如果是,则返回1,表示栈为空;否则返回0,表示栈非空。 `read()`函数用于读取栈顶元素的值,但首先需要检查栈是否为空。如果为空,程序会输出错误信息并退出。否则...

    数据结构栈实现表达式求值

    此函数用于比较两个操作符 `x` 和 `y` 的优先级,返回值为 `'>'`、`'或 `'='`,分别表示 `x` 的优先级高于、低于或等于 `y`。 ##### 4.5 表达式处理 ```c void Process(NumStack& numstack, OpStack& opstack, char...

    数据结构--栈和队列的应用实验报告.pdf

    【程序代码实现】中,`WhoIsFirst()` 函数用来比较两个运算符的优先级,返回值表示哪个运算符应该先进行。`Compute()` 函数执行实际的四则运算,根据传入的运算符和两个操作数返回计算结果。在`main()`函数中,实现...

    点击一个超链接弹出一个对话框

    3. `confirm`函数用于确认操作,有两个按钮(取消和确定),返回值为布尔类型,表示用户是否确认: ```javascript var isConfirmed = confirm('您确定要删除吗?'); if (isConfirmed) { // 执行删除操作 } ``` ...

    数据结构课件:第3章 栈和队列1栈.pptx

    链栈则是通过链表实现,每个节点包含数据和指向下一个节点的指针,链表的头部即为栈顶。 栈的类型定义通常包括以下要素: 1. **逻辑结构**:一对一的线性关系,但只能在栈顶进行插入和删除。 2. **存储结构**:顺序...

    popup 弹出框 js

    用户的选择会返回一个布尔值,`true`表示“确定”,`false`表示“取消”,根据返回值可以执行不同的操作。 3. `window.prompt()`: 提供一个输入对话框,允许用户输入数据。它包含一个可编辑的文本字段和两个按钮:...

    弹出框选择 返回父页面值

    "弹出框选择 返回父页面值"这个主题涉及到的是如何在两个或多个页面之间传递数据,特别是在一个页面(子页面)通过弹出框进行用户操作后,将结果传递回原始页面(父页面)。这个过程通常用于实现更复杂的用户交互,...

    数据结构实验

    `Precede` 函数根据运算符优先级表(用二维数组表示)比较两个运算符的优先级,返回值表示哪个运算符优先级更高。 `EvalExpr` 是核心的求值函数,它遍历输入的表达式字符串,遇到操作数时将其转换为整数并压入 `...

    数据结构课程设计---表达式计算

    根据给定的信息,我们可以推断出这是一个关于表达式计算的数据结构课程设计项目。该课程设计主要涉及到了栈这种数据结构的应用以及如何通过栈来解析并计算各种数学逻辑表达式。 ### 一、栈的基本概念 栈是一种特殊...

    asp.net弹出窗口 返回值

    这个函数能够在当前窗口中弹出一个新的窗口,显示指定的URL页面,并能够接收这个页面的返回值。在`showModalDialog`函数中,我们可以指定弹出窗口的宽度、高度、是否居中以及是否可以调整大小等参数。例如,在本文中...

    基于python栈实现的10进制转2进制代码

    栈通常有压入(push)和弹出(pop)两个主要操作。 在十进制转二进制的代码中,定义了一个名为 `deftenTotwo` 的函数,这是个自定义的函数名,意指从十进制转换到二进制。在Python中定义函数通常使用 `def` 关键字...

    栈与队列的顺序存储结构及实现C++语言源程序.doc

    4. `pop`:弹出栈顶元素,若栈空则输出错误信息并返回0。 5. `PrintOut`:打印栈中所有元素。 6. `IsEmpty`:检查栈是否为空,返回值与`SetEmpty`相同。 【队列的顺序存储结构】 虽然题目中没有给出队列的顺序存储...

    哈工大 数据结构 第一次实验 后缀表达式

    数据结构类型:int ji(char c) 创建一个返回值为 int 型的函数,用于比较两个操作符的优先级 double Cal(double num_1, double num_2, char op) // 创建一个返回值为 double 函数,用于两个数的计算,传入三个变量...

    pb函数库之窗口操作函数

    pb 函数库之窗口操作函数是 PowerBuilder 的一个重要组件,提供了一系列的窗口操作函数,包括 Open、Close、CloseWithReturn 和 OpenSheet 等。这些函数旨在帮助开发者更方便地创建和管理窗口、控件和事件。 1. ...

Global site tag (gtag.js) - Google Analytics