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

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

Войти
Регистрация
Восстановить пароль
 
MahovIV
5 / 6 / 1
Регистрация: 17.09.2013
Сообщений: 337
#1

Параметризованный класс списки - C++

22.05.2014, 19:03. Просмотров 215. Ответов 0
Метки нет (Все метки)

Создать параметризованный класс (шаблон) для списков. Предусмотреть в нём все методы, которые необходимы, чтобы новый тип данных мог быть использован наравне с системными типами.
Как сделать из класса списков параметризованный?
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
113
114
115
116
#include <iostream>
#include <conio.h>
using namespace std;
class CData
{
public:
    // ÑîáñòâåГ*Г*Г® Г¤Г*Г*Г*ûå ГЄГ«Г*Г±Г±Г*.
    int a;
    int b;
    // ÓêГ*Г§Г*òåëü Г*Г* ñëåäóþùèé ýêçåìïëÿð ГЄГ«Г*Г±Г±Г* CData.
    CData * m_pNext;
    
    // ГЉГ®Г*ñòðóêòîðû ГЄГ«Г*Г±Г±Г*.
    CData()
    {
        a = 0;
        b = 0;
        m_pNext = NULL;
    }
    CData(int a1, int b1)
    {
        a = a1;
        b = b1;
        m_pNext = NULL;
    }
};
class CList
{
public:
    // ÓêГ*Г§Г*òåëü Г*Г* ïåðâûé ýëåìåГ*ГІ Г±ГЇГЁГ±ГЄГ*.
    CData * m_pFirst;
    // ГЉГ®Г*ñòðóêòîð.
    CList();
    // ÄîáГ*âëåГ*ГЁГҐ Г¤Г*Г*Г*ûõ Гў ГЄГ®Г*ГҐГ¶ Г±ГЇГЁГ±ГЄГ*.
    void Add(CData * pNext);
    // Ïîèñê ïîñëåäГ*ГҐГЈГ® ýëåìåГ*ГІГ* Гў Г±ГЇГЁГ±ГЄГҐ.
    CData * GetLast();
    void ShowAll();
};
CList::CList()
{
    m_pFirst = NULL;
}
 
void CList::Add(CData * pNext)
{
    // Èùåì ïîñëåäГ*ГЁГ© ýëåìåГ*ГІ Гў Г±ГЇГЁГ±ГЄГҐ
    // ГЁ ïðèïèñûâГ*ГҐГ¬ pNext ГЄ Г*åìó.
 
    // Åñëè ñïèñîê Г*ГҐ ГЇГіГ±ГІ.
    if(m_pFirst!=NULL)
    {
        GetLast()->m_pNext = pNext;
    }
    else
    {
        // Åñëè ñïèñîê ГЇГіГ±ГІ, ГІГ®
        // äîáГ*âëåì Г¤Г*Г*Г*ûå Гў Г*Г*Г·Г*ëî Г±ГЇГЁГ±ГЄГ*.
        m_pFirst = pNext;
    }
}
 
CData * CList::GetLast()
{
    // ÓêГ*Г§Г*òåëü Г*Г* î÷åðåäГ*ûå Г¤Г*Г*Г*ûå Гў Г±ГЇГЁГ±ГЄГҐ.
    CData * pCurr = m_pFirst;
    // Åñëè ñïèñîê ГЇГіГ±ГІ, ГІГ® âîçâðГ*Г№Г*ГҐГ¬ NULL.
    if(pCurr == NULL)
    {
        return NULL;
    }
    // ÏîêГ* ГҐГ±ГІГј ñëåäóþùèé ýëåìåГ*ГІ Г±ГЇГЁГ±ГЄГ*.
    while(pCurr->m_pNext!=NULL)
    {
        pCurr = pCurr->m_pNext;
    }
    return pCurr;
}
void CList::ShowAll()
{
    // ÓêГ*Г§Г*òåëü Г*Г* î÷åðåäГ*ûå Г¤Г*Г*Г*ûå Гў Г±ГЇГЁГ±ГЄГҐ.
    CData * pCurr = m_pFirst;
    // Åñëè ñïèñîê ГЇГіГ±ГІ, ГІГ® ГЅГІГ® ГЁ Г*Г*ГЇГЁГёГҐГ¬.
    if(pCurr == NULL)
    {
        cout<<"List is empty.\n";
    }
    // ÏîêГ* ГҐГ±ГІГј ñëåäóþùèé ýëåìåГ*ГІ Г±ГЇГЁГ±ГЄГ*.
    do{
        // Âûâîäèì Г*Г* ГЄГ®Г*ñîëü î÷åðåäГ*îé ýëåìåГ*ГІ.
        cout<<"a="<<pCurr->a<<", b="<<pCurr->b<<"\n";
        // Ïåðåâîäèì pCurr Г*Г* ñëåäóþùèé ýëåìåГ*ГІ Гў Г±ГЇГЁГ±ГЄГҐ.
        // Åñëè Г®Г* Г°Г*ГўГҐГ* NULL, ГІГ® Г§Г*ГЄГ*Г*Г·ГЁГўГ*ГҐГ¬.
    }while((pCurr = pCurr->m_pNext)!=NULL);
}
int main(){
    CList list;
    CData *pData;
    int a;
    int b;
 
    for(int i = 0; i<3; i++)
    {
        cout<<"Enter a:";
        cin>>a;
        cout<<"\n";
        cout<<"Enter b:";
        cin>>b;
        cout<<"\n";
        pData = new CData(a, b);
        list.Add(pData);
        list.ShowAll();
    }
    getch();
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2014, 19:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Параметризованный класс списки (C++):

Параметризованный класс и СТЛ(список) - C++
Есть задание: написать параметризованный класс, используя в качестве контейнера последовательный список. Вопрос: что такое...

Параметризованный класс(поле - список адаптера контейнера - очередь с приоритетом) - C++
Надо реализовать адаптер контейнера: приоритетная очередь на осонове списка. Должно оно быть описано в сообстенном параметризированом...

Параметризованный класс. Встроенные арифметические статические или динамические типы данных - C++
Ошибка 1 error C4700: использована неинициализированная локальная переменная &quot;d&quot; Ошибка 6 error C4700: использована неинициализированная...

Параметризованный массив. Подчеркивает if и for - C++
Задание создать параметризованный массив с конструкторами и деструкторами. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Каким компонентом и как вывести std::list параметризованный объектом пользовательского типа? - C++
Создал класс: class Dannie { public: int Et; int EtMy; int KK; int KKMy; double P; double PMy;

Списки, как склеить списки между собой? - C++
Ребят, привет всем, есть код, в классе которого описаны несколько методов: добавление элемента в список, удаление и просмотр списка, дак...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2014, 19:03
Привет! Вот еще темы с ответами:

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...

Класс таблиц баз данных и класс записей в таблице(реляционная таблица). Предусмотреть класс связей между таблицами - C++
Здравствуйте! Никак не могу продумать структуру этой программы. Проходим наследование, но я все равно не знаю, как его здесь применить. Как...

Отдельно класс данных, класс формул и главный класс - C++
Здравствуйте! У меня есть три вопроса. Первый вопрос. Скажите пожалуйста! Правильный ли это подход к созданию приложений :...

Реализовать класс родительский класс "Пара чисел" и класс-наследник "Комплексное число" - C++
Ткма работы создать класс pair (пара чисел); определить метод перемножения полей и операцию сложения пар (a,b)+(c,d) =(a+b,c+d)...


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

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

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