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

Конструктор-копирования связного списка - C++

Восстановить пароль Регистрация
 
mrKi
2 / 2 / 0
Регистрация: 01.08.2013
Сообщений: 60
28.08.2013, 23:57     Конструктор-копирования связного списка #1
Подскажите,как реализовать конструктор копирования для этого списка
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
class part
{
      public:
             //ГЉГ®Г*ñòðóêòîð,äåñòðóòîð,ГЄГ®Г*ñòðóêòîð êîïèðîâГ*Г*ГЁГї.
             part()
             {
                   item=0;
                   next=NULL;
             }
             part(int i,part*n=NULL)
             {
                   next=n;
                   item=i;
             }
             ~part(){}
             part(part&src)
             {
                           src.item=this->item;
                           src.next=this->next;
             }
             // Ìåòîä âûâîäÿùèé Г*Г* ГЅГЄГ°Г*Г* Г§Г*Г*Г·ГҐГ*ГЁГҐ îáúåêòГ*.
             void showItem(){cout<<"Item="<<item<<endl;}
             
             part*next;
             int item;
};
class partList
{
      public:
             //ГЉГ®Г*ñòðóòîðû,ГЄГ®Г*ñòðóêòîð êîïèðîâГ*Г*ГЁГї,äåñòðóêòîð.
             partList(int i)
             {
                          last=new part;
                          first=new part;
                          part*temp=new part(i,last);
                          temp->next=last;
                          first->next=temp;
                          countOfPart++;
             }
             partList()
             {
                       last=new part;
                       first=new part;
                       first->next=last;
             }
             partList(partList &src)
             {
                               this->first=new part;
                               if(src.getCountOfPart()) 
                               {
                                           int i=src.getCountOfPart();
                                           part *temp=src.first->next;
                                           this->first=new part;
                                           this->first->next=new part(temp->item);
                                           i--;
                                           part *temp2=this->first->next;
                                           while(i)
                                           {
                                                   temp=temp->next;
                                                   temp2->next=new part(temp->item);
                                                   temp2=temp2->next;
                                                   i--;
                                           }
                               }
             }
            //Методы класса
             int getCountOfPart(){return countOfPart;}
             ~partList()
             {
                        part *temp=first->next;
                        part *wtd;
                        while(temp->next)
                        {
                                         wtd=temp;
                                         temp=temp->next;
                                         delete wtd;
                        }
             }
             void add(int i)
             {
                  part *temp=first->next;
                  while(temp->next) temp=temp->next;
                  temp->item=i;
                  last=new part;
                  temp->next=last;
                  countOfPart++;
             }
             void add(partList &wta)
             {
                  part *temp=wta.first->next;
                  while(temp->next) 
                  {
                  this->add(temp->item);
                  this->countOfPart++;
                  temp=temp->next;
                  }
             }
             void show()
             {
                  part *temp=first->next;
                  while(temp->next)
                  {
                                   temp->showItem();
                                   temp=temp->next;
                  }
             } 
             
    private:
              part*first;
              part*last;
              int countOfPart;
};
Добавлено через 59 минут
Написал вот это,но когда программа доходит до строчки в котором он используется вылетает ошибка
C++
1
2
3
4
5
  partList(partList &src)
             {
                     for(part *temp=src.first->next;temp->next;temp=temp->next)
                     add(temp->getItem());          
             }
Добавлено через 10 минут
Проблема решена. Надо было только выпить чашку кофе и немного подышать свежим воздухом Тебя можно удалить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2013, 23:57     Конструктор-копирования связного списка
Посмотрите здесь:

C++ Реализация связного списка
Ошибка в Классе связного списка C++
Создание и сортировка связного списка C++
Сортировка связного списка C++
C++ Доступ к элементам связного списка
C++ сортировка связного списка
C++ Реализация связного списка
Удаление элементов из связного списка C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
29.08.2013, 08:26     Конструктор-копирования связного списка #2
Цитата Сообщение от mrKi Посмотреть сообщение
Тебя можно удалить?
Тебя можно написать какова была ошибка и как вы ее решили.
mrKi
2 / 2 / 0
Регистрация: 01.08.2013
Сообщений: 60
31.08.2013, 16:28  [ТС]     Конструктор-копирования связного списка #3
SatanaXIII, в чем проблема я и сам толком не понял,компилятор не ругался,а вот программа не работала как нужно.
Решил вот так
C++
1
2
3
4
5
6
7
8
 partList(partList &src)
             {
                       countOfPart=0;                               
                       last=new part;
                       first=new part;
                       first->next=last;   
                       add(src);    
             }
Yandex
Объявления
31.08.2013, 16:28     Конструктор-копирования связного списка
Ответ Создать тему
Опции темы

Текущее время: 13:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru