请问这两句话有差别吗?差别在哪里?谢谢!

iwkoo 2011-05-24 08:09:29
typedef struct Node
{
int data;
struct Node * pNext;
}NODE, * PNODE;

typedef struct Stack
{
PNODE pTop;//顶部
PNODE pBottom;//底部
}STACK, *PSTACK;

bool pop(PSTACK pS, int * pVal)
{
if (empty(pS))
{
return false;
}
else
{
PNODE r = pS->pTop;
*pVal = r->data;
pS->pTop = r->pNext;
free(r);
r = NULL;

return true;
}

}

/*
bool pop(PSTACK pS, int * pVal)
{
if(empty(pS))
{
return false;
}
else
{
while (pS->pTop != pS->pBottom)
{
*pVal = pS->pTop->data;
pS->pTop = pS->pTop->pNext;
}
return true;
}
}
*/
下面的2个POP是否有差别,差别在哪里?哪个更好?
...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
iwkoo 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dizuo 的回复:]

引用 3 楼 iwkoo 的回复:

引用 1 楼 dizuo 的回复:

第一个只pop一次,第二个是全部pop掉,返回最后一个元素。

如果第二个不考虑 while的话还有差别吗?

第一样,不过第二个需要free结点,
[/Quote]
第二个要怎么free 节点?是这样吗 ? free(pS->pTop)
这两个,那个写会比较好,加上free后.
iwkoo 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wfq_1985 的回复:]

第二个pop是不是有问题,如果栈中只有一个数据时(即pS->pTop == pS->pBottom),pop失败。
[/Quote]

1
出栈成功!出栈的值是 :1


Press any key to continue
ryfdizuo 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iwkoo 的回复:]

引用 1 楼 dizuo 的回复:

第一个只pop一次,第二个是全部pop掉,返回最后一个元素。

如果第二个不考虑 while的话还有差别吗?
[/Quote]
第一样,不过第二个需要free结点,
iwkoo 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dizuo 的回复:]

第一个只pop一次,第二个是全部pop掉,返回最后一个元素。
[/Quote]
如果第二个不考虑 while的话还有差别吗?
wfq0987 2011-05-24
  • 打赏
  • 举报
回复
第二个pop是不是有问题,如果栈中只有一个数据时(即pS->pTop == pS->pBottom),pop失败。
ryfdizuo 2011-05-24
  • 打赏
  • 举报
回复
第一个只pop一次,第二个是全部pop掉,返回最后一个元素。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧