我对之前被问过的问题有一定的疑问。
我被赋予了这个函数原型void StackPop(NodeType *Top)
,并被告知修改堆栈顶部而无需访问堆栈对象。这里的StackPop
函数是一个全局函数,而不是Stack类的成员函数。弹出后,Top应该指向Top元素的新值。
作为一种解决方案,只有在调用时将堆栈顶部节点的地址传递给函数时,才能在这种情况下弹出堆栈顶部。例如:StackPop(&address);
修改堆栈顶部
NodeType* temp;
temp = top;
*top = (*top)->next;
delete temp;
这是问题的简单答案,还是需要处理的其他情况?
答案 0 :(得分:0)
是的,这是一个有效的简单答案,有三点需要注意:
temp = top
应阅读temp = *top
; *top
为NULL的情况(而不仅仅是取消引用NULL指针); void StackPop(Node *Top)
]的原型不兼容,因为它需要Node**
作为其论据。我唯一的另一个评论是StackPop
听起来应该是成员函数而不是自由函数。