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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Использование функции cpp в проекте c http://www.cyberforum.ru/cpp-beginners/thread924536.html
Есть сишный проект, понадобилось прикрепить к нему один готовый плюсовый модуль. Схематичный вид этого модуля: //module.cpp namespace module_namespace { struct params { inline params() : field1(val1), field2(val2), field3(val3), field4(val4) { }
C++ Быстрота работы Скажите, какой алгоритм на языке C++ будет выполняться быстрее, если мы не знаем величину массива: в котором я создам сразу большой массив, а буду использовать только часть. Или быстрее будет динамическое выделение памяти? http://www.cyberforum.ru/cpp-beginners/thread924518.html
Как записывать в массив с 2 переменными текст C++
Как записывать в массив с 2 переменными,текст,тоесть есть массив mas, в а="привет", в b="пока";
C++ stack around the variable was corrupted масив через указатель
Такая проблема - создаю масив целых чисел через функцию с использованием указателей - выскакивает данная ошибка, хотя код работает верно, почитал - что где-то идет переполнение, но как избавиться ума не приложу... Создается 4ре масива разной длины по-очередно, каждый масив внутри функции заполняется уникальными (неповторяющимися) числами по всему диапазону. Помогите пожалуйста. #include...
C++ Начало пути прогера http://www.cyberforum.ru/cpp-beginners/thread924471.html
Здравствуйте. Мне 19, перешел на 3 курс по специальности "Компьютерная безопасность". Уже 2 года периодически интересуюсь программированием, почитал некоторые книжки, попробовал написать код и каждый раз утыкаюсь на одну и ту же проблему - не где опробовать знания. Нет, я понимаю что можно писать всякую фигню для себя, но это скучно и нету какой то особой мотивации на конкретный проект, что бы...
C++ Составить блок-схему #include <iostream> #include <string> #include <iomanip> using namespace std; struct PRICE{ string tovar; string shop; int price; }; int main() подробнее

Показать сообщение отдельно
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
17.07.2013, 14:35     Динамический список
Вот есть класс..совсем не замысловатый!
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?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru