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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ CLOCK_PER_SEC - есть отражение скорости системы? http://www.cyberforum.ru/cpp-beginners/thread1185075.html
Используя Windows7 x86 переменная CLOCK_PER_SEC имеет значение 1000, в Unix-системах это значение равно 1 млн. Этот макрос определяет число тиков в секунду. Получается, что Unix-системы, с теми же...
C++ Структуры: расписание движения автобусов В справочной автовокзала хранится расписание движения автобусов. для каждого рейса указаны его номер, тип автобуса, пункт назначения, время отправления и прибытия. Вывести информацию о рейсах,... http://www.cyberforum.ru/cpp-beginners/thread1185062.html
Написать рекурсивную и нерекурсивную программу C++
Написать рекурсивную и нерекурсивную программу вычисления значения функции f, полученной оператором примитивной рекурсии R над функциями g и h. g (x, y, z) = x+y+z h(x, y, z, t,v) = (v+1)(x+z) ...
Какая фигура в блок-схеме отвечает за вывод в файл? C++
Ребята,какая фигура применяется в языке си плюс плюс,которая выводит результат в текстовый файл,или подойдет параллелепипед?
C++ Принцип оптимальности Беллмана http://www.cyberforum.ru/cpp-beginners/thread1185054.html
Есть инвестор и k предприятия. Инвестор выделяет n тысяч денежных единиц, которые будут распределены между этими предприятиями, по уровню прибыли от них. Подробнее в файле. Помогите решить задачу,...
C++ Разделение двузначного числа на десятки и единицы доброго времени суток! Помогите справиться с проблемой которая возникла на моем пути. не заню как решить задачу: нужно написать прогу, которая разделяет двухзначное число на десятки и единицы. в... подробнее

Показать сообщение отдельно
MahovIV
5 / 6 / 1
Регистрация: 17.09.2013
Сообщений: 337

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

22.05.2014, 19:03. Просмотров 221. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru