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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.79
amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 240
#1

Добавление элемента в конец односвязного списка - ошибка - C++

08.04.2012, 09:11. Просмотров 6328. Ответов 4
Метки нет (Все метки)

Всем привет!

Собственно, задача такая: написать функцию, добавляющую элемент в конец связного списка. Вроде всё правильно, компилируется, но ничего не выводится, только появляется окошко "Закрытие программы ... ".
Что не так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////
struct link                           
   {
   int data;                          
   link* next;                        
   };
////////////////////////////////////////////////////////////////
class linklist                        
   {
   private:
      link* first;                    
   public:
      linklist()                      
         { first = NULL; }            
      void additem(int d);            
      void display();                
   };
//--------------------------------------------------------------
void linklist::additem(int d)  //добавляю в конец списка        
   {
   link* newlink1  = new link;
   newlink1 = first;
   while (newlink1->next != NULL)
       newlink1 = newlink1->next;
   link* newlink = new link;
   newlink->data = d;                  
   newlink->next = NULL;               
   newlink1->next = newlink;
   }
//--------------------------------------------------------------
void linklist::display()            
   {
   link* current = first;             
   while( current != NULL )           
      {
      cout << current->data << endl;  
      current = current->next;        
      }
   }
////////////////////////////////////////////////////////////////
int main()
   {
   linklist li;       
 
   li.additem(25);    
   li.additem(36);
   li.additem(49);
   li.additem(64);
 
   li.display();      
   return 0;
   }
Всем откликнувшимся спасибо за помощь.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2012, 09:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добавление элемента в конец односвязного списка - ошибка (C++):

Добавление элемента в конец односвязного списка - C++
Добрый день. Помогите решить проблему с ошибкой в функции AddItem. CPP файл #include &quot;stdafx.h&quot; #include &quot;Slovar.h&quot; #include...

Добавление в конец односвязного списка - C++
Не получается написать эту функцию.Добавление в начало более тривиально.Сам список представлен так. Насколько я знаю,нужно 2 случая...

Добавление объекта в конец односвязного списка - C++
необходимо добавить объект в конец списка. как это сделать с помощью моей функции #include &lt;iostream&gt; #include &lt;conio.h&gt; using...

Не работает добавление в конец односвязного списка - C++
работаю с формой, рисую там различные объекты, которые надо добавлять в собственное хранилище(такое задание) вот отрывок кода из header...

Организовать добавление узла в конец односвязного списка - C++
1. Организовать ввод в однонаправленный список. Узел списка состоит из двух полей: целое число и указатель. Необходимо организовать...

Добавление элемента в начало односвязного списка - C++
Здравствуйте, я не где не могу найти функцию по добавлению элемента в начало односвязного списка. Пожалуйста подскажите ее.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
08.04.2012, 10:58 #2
Перед return 0;
Надо вставить код, задерживающий закрытие программы.
Например,
C++
1
system("pause");
или сделать ввод символа
C++
1
char c;cin>>c;
0
amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 240
08.04.2012, 11:13  [ТС] #3
Все равно не работает.
0
Миниатюры
Добавление элемента в конец односвязного списка - ошибка  
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
08.04.2012, 11:18 #4
Вот это 100% потеря памяти
C++
1
2
link* newlink1  = new link;
   newlink1 = first;
А вот это да. поиск последнего элемента, и добавление после него в список нового, вроде правильно
C++
1
2
3
4
5
6
while (newlink1->next != NULL)
           newlink1 = newlink1->next;
link* newlink = new link;
   newlink->data = d;                  
   newlink->next = NULL;              
   newlink1->next = newlink;
И опять, нигде не видно деструкторов. О какой потери памяти я говорил? она у вас вся не освобождается.

И у меня вопрос к знающему: можно ли структуру struct link сделать полностью приватной с другом linklist или того, что link* first; является приватным уже достаточно?
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
08.04.2012, 16:05 #5
Kuzia domovenok, её можно (и нужно было бы) сделать просто приватной, linklist другом делать не надо (это же структура, все поля и так публичные). То, что link *first приватный, в принципе, достаточно с точки зрения защиты данных, но с точки зрения общего проектирования то, что структура, специфичная для данного класса и только для него, находится снаружи, мне лично не нравится
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2012, 16:05
Привет! Вот еще темы с ответами:

Добавление элемента в конец списка - C++
Решил перегрузить функцию добавления элемента, чтоб пользователь мог выбрать куда добавить новый элемент, в начало (перед первым) или в...

Добавление элемента в конец списка - C++
Сначала добавляет первый элемент, а далее не хочет? Посмотрите свежим глазом, а то я лагаю! void List::bound(char data) {if (!Head) {...

Добавить элемент в конец односвязного списка - C++
Поправьте, пожалуйста, что не так с функцией Add_end.(остальное работает) #include &lt;iostream&gt; #include &lt;conio.h&gt; using...

Списки. Функции добавление списка в конец и в середину другого списка. - C++
Всем привет!) Я вот написал две функции, 1- добавляется список2 в середину списка1, а 2 - добавляет список2 в конец списка1....когда я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.04.2012, 16:05
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru