Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
RetiF
8 / 8 / 1
Регистрация: 21.12.2008
Сообщений: 36
1

Контейнерный класс типа "Список" без использования STL

04.12.2009, 18:29. Просмотров 1245. Ответов 1
Метки нет (Все метки)

Есть базовый класс Component и три производных от него класса: Chipset, SoundCard и VideoAdapter. Нужно описать контейнерный класс Computer типа список, в котором будут храниться объекты этих трёх классов
Не использовать list.h из STL, а создать свой
Делаю так:

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
typedef struct ListElem
{
 Component* Cmp;
 struct ListElem* Next;
};
 
class Computer
{
 public:
    ListElem Head, *iter;
    int countList;
    
    Computer() 
    {
     countList = 0;
     Head.Cmp = NULL;
     Head.Next = NULL;
    }
    ~Computer() {}
    
    void mount(Component* Cmpnt)
    {
     if(Head.Next == NULL)
     {
      countList++;
      Head.Cmp = Cmpnt;
      Head.Next = new ListElem;
      Head.Next->Next = NULL;
     } else {
             countList++;
             iter = Head.Next;
             while(iter != NULL) {iter = iter->Next;}
             iter = new ListElem;
             iter->Cmp = Cmpnt;
             iter->Next = NULL;
            }
    }
};
Создал три объекта классов, производных от базового Component и сделал вот так:
C++
1
2
3
4
Computer Comput;
Comput.mount(&VdAdpt);
Comput.mount(&SndCrd);
Comput.mount(&ChpSt);
Но добавления в список не происходит

Для проверки написал функцию вывода адресов на экран:
C++
1
2
3
4
5
void Printtt()
    {
     cout << Head.Next << endl; iter = Head.Next;
     while(iter != NULL) {iter = iter->Next; cout << iter << endl;}
    }
Выводит только вот это:
C++
1
2
0x2194
0x0000
А должно бы вывести три разных адреса памяти. Я не понимаю, в чём дело?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2009, 18:29
Ответы с готовыми решениями:

Ошибка при компиляции:"C2955 "Tree": для использования класс шаблон требуется список аргументов шаблон"
Есть класс бинарного дерева, в нем структура. Класс - Tree, структура - list(листик, а не список)....

Создать класс "Список объектов любого типа"
Создайте класс, который способен запоминать список объектов не заданного типа класса (для любого...

Создать класс "Список объектов любого типа"
Создайте класс, который способен запоминать список объектов не заданного типа класса (для любого...

"LinkedList": для использования класс шаблон требуется список аргументов шаблон
Что то не могу въехать в чем промах? LinkedList.h #pragma once #include &lt;iostream&gt; #include...

Создать список без использования STL
Составьте программу, которая: - создает список из 10-ти элементов; - удаляет 1-й элемент...

1
RetiF
8 / 8 / 1
Регистрация: 21.12.2008
Сообщений: 36
23.12.2009, 11:24  [ТС] 2
А дело было в том, что добавлять надо было всегда в голову списка

C++
1
2
3
4
5
countList++;
ListElem* mounted = new ListElem;
mounted->Cmp = Cmpnt;
mounted->Next = Head.Next;
Head.Next = mounted;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2009, 11:24

Иерархия классов "список"-"очередь", вызов метода через класс интерфейс
Есть небольшая иерархия классов, контейнер (список) для хранения объектов каждого класса, контейнер...

Класс "Студент", реализовать динамический список "Группа студентов"
реализовать динамический список &quot; группа студентов&quot;. Узел: -группа -фамилия Функции списка:...

Библиотека стандартных шаблонов (STL). Класс "vector"
1. Создать вектор (пусть это будет целочисленный вектор). 2. Заполнить его значениями при помощи...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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