// Reverse the stack with fun() and fun1()
/* I am unable to understand what is being passed in function fun().
I am not sure about the argument of type stack <int> &s.
Is it a whole stack being passed or just one node? */
void fun1(stack<int> &s, int k)
{
if (s.empty())
{
s.push(k);
return;
}
int t = s.top(); s.pop();
fun1(s, k);
s.push(t);
}
void fun(stack<int> &s)
{
if (s.empty())
{
return;
}
int t = s.top(); s.pop();
fun(s);
fun1(s,t);
}
程序尝试使用函数 fun() 和 fun1() 反转堆栈。我的问题只是参数
stack <int>
&s 取什么地址?
在 C++ 中,reference 基本上是现有变量的别名。 它们使用&符号(
&
)表示; stack<int>&
表示对 stack<int>
的引用。 因此,函数 s
和 fun
中名为 fun1
的参数表示对整个堆栈的引用,而不是其中单个节点的引用。