Есть список и есть функция add
. Добавляем элементы, а с функцией doubling
удваиваем. В функции main
вызываем сначала функцию add(7)
, а потом doubling()
.
На выходе почему-то получаем не 7*2, то есть 14, а почему-то получаем 7*4 т.е. 28.
Почему?
Но с add(3) doubling()
все работает, т.е. получаем 6.
Код:
#include <stack>
#include <iostream>
#include <utility>
using namespace std;
class Node
{
public:
Node(int num) : _num(num), _next(NULL){}
friend class List;
private:
int _num;
Node* _next;
};
class List
{
public:
List() : _root(NULL){}
void add(int rhs)
{
if (!_root)
{
_root = new Node(rhs);
}
else
{
Node* tmp = _root;
while (tmp->_next)
{
tmp = tmp->_next;
}
tmp->_next = new Node(rhs);
}
}
void print() const
{
Node* tmp = _root;
while (tmp)
{
cout << tmp->_num << " ";
tmp = tmp->_next;
}
cout << endl;
}
void doubling() // udvoit kazhdoe znachenie
{
Node* tmp = _root;
while (tmp)
{
tmp->_num *= 2;
tmp = tmp->_next;
}
}
~List()
{
Node* tmp = _root;
while (tmp)
{
_root = tmp->_next;
delete tmp;
tmp = _root;
}
}
private:
Node* _root;
};
int main()
{
List lst;
lst.add(7);
lst.doubling();
lst.add(3);
lst.doubling();
lst.print();
return 0;
}
Удваиваем раз:
lst.doubling();
lst.add(3);
Удваиваем два:
lst.doubling();
Два удвоения - это и есть учетверение, нет?
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Почему выводит весь массив символов(всю строку)? Если там будет,допустим, массив целочисельный,то выведет всего лишь адрес первого элемента
Для чего нам нужно еще раз объявлять статическую переменную вне класса, указывать область видимости, если я уже в классе определил ее как...
Мне нужно в мапу histogram записать значенияЯ записываю, но выдает ошибки
Добрый день! Пытаюсь вникнуть в потоки и не могу понять несколько вещей: