2017-02-10 1 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(). Мой вопрос только в том, что стек аргументов & s берет адрес чего?Я пытаюсь перевернуть стек, используя рекурсию. Что передается в функции fun()? s - объект класса стек

+0

В C++ символ & (в этом контексте) указывает * ссылку * на объект стека. (т. е. когда вы передаете s в fun(), это не делает копию s, а скорее ссылается на исходный объект). Возможно, это не то, что вы хотите для такой рекурсивной функции. –

+2

Итак, вы программист C, изучающий C++, который еще не встречал ссылок? Вы, вероятно, захотите немного поработать ;-) – John3136

+2

Попробуйте сохранить исполняемый код, не отменяя его с акцентом. Если вам нужно обратить внимание на что-то, используйте комментарий. – tadman

ответ

0

В C++ a ссылка в основном является псевдонимом для существующей переменной. Они представлены с использованием амперсанда (&); stack<int>& указывает ссылку на stack<int>. Таким образом, аргументы с именем s в ваших функциях fun и fun1 указывают ссылки на целые стопки, а не на отдельные их узлы.

+1

Спасибо. Я понял. –

Смежные вопросы