Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Односвязные списки: нужно ли при выходе из функции возвращать голову? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти цифру числа, проверить делимость http://www.cyberforum.ru/cpp-beginners/thread1202398.html
Приветствую Вас уважаемые форумчане, прошу вашей помощи в решении данного примерчика, ибо чайник: 1.Дано натуральное число: • найти вторую (сначала) цифру этого числа; • верно ли, что данное число...
C++ Найти ошибочку. Нахождение суммы цифр вещественного числа Всем привет! Создал функцию нахождения суммы цифр вещественного числа. Функция практически работает, но, когда я кладу в переменную число н-р: "1.256" почему-то добавляются к числу девятки т.е.... http://www.cyberforum.ru/cpp-beginners/thread1202394.html
C++ Создать класс Time для работы со временем
Нужно исправить ошибки в программе.Срочно. Создать класс Time для работы со временем в формате «час:минута:секунда». Класс должен включать в себя три конструктора инициализации: числами, ...
C++ Нарисовать круг и квадрат
Нарисовать круг и квадрат!!!у меня имеется прямоугольник и овал,как переделать +++++++++++++++++++ class Rect:public Shape { public: void draw() { line(x1,y1,x2,y1); ...
C++ Статические и виртуальные функции http://www.cyberforum.ru/cpp-beginners/thread1202343.html
Составить программу с одним родительским классом и двумя потомками. Все поля должны быть закрытыми. Потомки должны содержать виртуальные функции. Для родительского объекта создать статическую...
C++ Сумма по модулю 256 Обьясните в алгоритме ГОСТ 28147-89 В РЕЖИМЕ ГАММИРОВАНИЯ 32-х разрядный суматор по модулю 2^32 как это и помогите с реализацией подробнее

Показать сообщение отдельно
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
08.06.2014, 13:24
Во-первых, Вы передаете в функцию insert копию указателя, а не сам адрес, поэтому все данные просто теряются. Нужно передавать указатель на указатель (List** head), а потом каждый раз разыменовывать head, либо передать ссылку на указатель (List*&) и ничего разыменовывать не придется. Я не помню, можно ли так делать в Си, но знаю, что можно в С++. Хотя и у Вас тоже не Си: оператора выделение памяти new в Си нет.
Во-вторых, при Вашей реализации insert - head будет держать только последний добавленный элемент. Он и будет выводиться. Вот так будет правильней:
C++
1
2
3
4
5
6
7
8
9
10
void insert(List*& head, atom q){
  List *buff = new List;
  buff->data = q; 
  buff->next = NULL;
 
  if (head != NULL)
      buff->next = head;
  
  head = buff;
}
В данный момент элементы добавляются в начало, поэтому вывод будет происходить задом-наперед.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru