我正在尝试使用递归来反转堆栈。 fun() 函数中传递的是什么? s 是类栈的对象

问题描述 投票:0回答:1
// 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++ data-structures
1个回答
0
投票

在 C++ 中,reference 基本上是现有变量的别名。 它们使用&符号(

&
)表示;
stack<int>&
表示对
stack<int>
的引用。 因此,函数
s
fun
中名为
fun1
的参数表示对整个堆栈的引用,而不是其中单个节点的引用。

© www.soinside.com 2019 - 2024. All rights reserved.