2017-02-10 4 views
-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 arguement 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()関数を使用してスタックを逆転しようとしています。私の質問は、引数スタック&は何のアドレスを取るだけですか?再帰を使用してスタックを逆転しようとしています。 function fun()で何が渡されていますか? sはクラススタックのオブジェクトです

+0

C++では、&(このコンテキストでは)はスタックオブジェクトへの*参照*を示します。 (つまり、sをfun()に渡すと、sのコピーは作成されず、元のオブジェクトへの参照が渡されます)。これは、このような再帰関数に対して必要なものではないかもしれません。 –

+2

あなたはCプログラマーで、まだリファレンスを満たしていないC++を学んでいますか? – John3136

+2

コードを実行可能にしておきますが、強調してコードを実行しないでください。あなたが何かに注意を引く必要がある場合は、コメントを使用してください。 – tadman

答えて

0

C++で参照は、基本的に既存の変数のエイリアスです。それらは、アンパサンド(&)を使用して表されます。 stack<int>&は、stack<int>への参照を示します。したがって、関数funおよびfun1sという引数は、スタック全体への参照であり、個々のノードの参照ではありません。

+1

ありがとうございます。わかった。 –

関連する問題