Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
6 / 6 / 5
Регистрация: 22.11.2012
Сообщений: 95

Динамический список

17.07.2013, 14:35. Показов 1085. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот есть класс..совсем не замысловатый!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//=============================================================================
//=============================================================================
class id_list
{
      //private:
      public:
      int id;
      id_list* next;
      friend class base_info;
      void addID(int add_id,id_list* const first);
      void deleteID (int del_id,id_list* const first);
      void showIDlist(id_list* const first); 
      id_list(int c_id);   
};
//=============================================================================
//=============================================================================
значит в нем хранится список доступных id для дальнейшего использовния

Не по теме:

в будущем это класс будет входить в другой (хотя это наверно не важно)


значит так что у нас есть
1)конструктор который задает ид при создании(добавлении доступных ид)
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
id_list::id_list(int c_id)
{
                     id=c_id;
                     next=NULL;
}

2)шоу айди типо вывести весь список
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void id_list::showIDlist(id_list* const first)
{
     cout<<"====================================================================";
     cout<<"\nCurrent id list:";
     if(first->next)
     {
       id_list* tmp=first->next;
       cout<<"\nID:"<<tmp->id;
       while(tmp->next)
       {
                       tmp=tmp->next;
                       cout<<"\nID:"<<this->id;
       } 
      cout<<"\n List ended\n"; 
     }
     else
     cout<<"\nList empty\n";
     cout<<"====================================================================\n";
     system("pause");
}

3)Удаление задоной айдищки из списка
Кликните здесь для просмотра всего текста
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
//óäàëåíèå âûáðàíîãî èä èç ëþáîãî ìåñòà
void id_list::deleteID (int del_id,id_list* const first)
{
     if(first->next)
     {
          id_list *tmp=first->next;
          id_list *tmp2=first;
          while(1)
          {
                  if(tmp->id==del_id)
                  {
                                     if(tmp->next)
                                     {
                                                  tmp2->next=tmp->next;
                                                  delete tmp;
                                     }
                                     else
                                     {
                                                  tmp2->next=NULL;
                                                  delete tmp;
                                     }
                  break;
                  }
                  else
                  {
                      tmp=tmp->next;
                      tmp2=tmp2->next;
                  }
          }
                                                  
     }
     else
     {
         cout<<"List is Empty nothing to delete here!";
     }
}

4)И добавление заданной айдишки в конец
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//Adding ID to list
//adds necessary id to the end of the id list
//uses constructor for adding
void id_list::addID(int add_id,id_list* const first)
{
     id_list *tmp;
     if(first->next)
     {
      tmp=first->next;
      while(tmp->next)
      {
      tmp=tmp->next;
      }
      tmp->next=new id_list(add_id);
     }//if
     else
     {
      first->next=new id_list(add_id);
     }//else
}

и собственно "тест" всего этого из мэйна.. вывод работает правельно это я уже точно проверила, проверяя возможность добавлять сталкнулась с проблемой... сначала код "теста"
C++
1
2
3
4
 id_list* const first=new id_list(8);
    first->addID(98,first);
    first->addID(77,first);
    first->showIDlist(first);
немного не правильно выглядит но это в будущем не будет использоваться напрямую и все методы будут скрыты
в любом случае что ожидалось....
создается константный указатель на первый элемент который останется даже если лист пуст...так что первый объект листа как бы фиктивный...не несет смысловой нагрузки (пока) в будущем в нем будет храниться кол-во элементов в списке.я его создала с значением 8
затем создала еще 2 с значением 98 и 77, должно было выгледеть так :
ID: 98
ID: 77
List ended;
*фирст пропускается так как смысла ид не несет
что я получаю в итоге?
ID:98
ID:8
если я создам еще 2,3,4,5...10000 элементов у всех них будет значение 8 как у first изменяю его значение изменяется значение всех последущих созданных.Самое интересное странное что первый после first создается какраз с нужным значением...я подумала что мб это из-за того что я вызываю все через указатель first
(а как пока иначе?)пришла в голову гениальная идея сделать функции статичными оказалась не такой уж гениальной... что делать? почему мои идшки получают все значения из first?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.07.2013, 14:35
Ответы с готовыми решениями:

Динамический список
Камнем преткновения стали динамические списки. Никак понять не могу. Уже спрашивал, но в основном используют встроенные функции. А я не...

Динамический список
Помогите решить задачу. Вчера обращалась, знаю, стыдно. ._. В общем, другая задачка и большая просьба написать её на этом уровне: ...

динамический список
Всем здраствуйте . В проге надо создать динамический список и реализовать всякие функции для редактирования и преобразования элементов...

2
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
17.07.2013, 15:20
showId() строка 13: cout<<"\nID:"<<tmp->id;
1
6 / 6 / 5
Регистрация: 22.11.2012
Сообщений: 95
17.07.2013, 15:29  [ТС]
да уж я думала что ошибка или в конструкторе или при добавке ..все пересмотрела 100 раз каждую чтрочку... а в итоге вообще не там искала..хорошо хоть все методы запостила иначе не нашли бы ошибку!!!Спасибо вам огромное
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.07.2013, 15:29
Помогаю со студенческими работами здесь

Динамический список
пожалуйста если можно подскажите как создать динамический список в классе C++ (если можно с примером хотя бы маленьким)

Динамический список
Здравствуйте. получил задание создать динамический список и методы работы со списком создать список, удалить список, добавить в список,...

динамический список
вообщем огромная просьба, показать хотя бы каким макаром писать, ну если будет что то готовое в коде, то это было бы классно, желателен...

динамический список
вот начал разбираться с динамическими списками, объясните что на так делаю. спасибо #include &lt;iostream&gt; using namespace std; ...

Динамический список
Привет) Помогите мне пожалуйста написать программу, которая бы позволяла вставляла бы элемент после первого элемента, имеющего заданное...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru