11 шаблоны
.pdf11 – 11
Пример:
//Шаблон класса, представляющего
//односвязный список
template <class T>
class list { T data; list *next;
11 – 12
public: list(T d);
//Функция, которая добавляет узел
//после узла, на который указывает
//указатель node
void add(list *node)
{
node->next = this; next = 0;
}
11 – 13
//Функция, которая возвращает
//указатель на следующий узел списка
list *getnext()
{
return next;
}
T getdata()
{
return data;
}
};
11 – 14
// Для чего нужна эта функция ?
template <class T> list <T> :: list(T d)
{
data = d; next = 0;
}
11 – 15
int main()
{
list <char> start(’a’); list <char> *p, *last; int i;
11 – 16
// Создание списка символов
last = &start; for(i=1; i<26; i++) {
p = new list <char> (’a’ + i); p->add(last);
last = p;
}
11 – 17
// Печать списка
p = &start; while(p) {
cout << p->getdata(); p = p->getnext();
}
return 0;
}
abc ... xyz
11 – 18
Пример:
Создание списка ЦЧ:
list <int> int_start(1);
Пример:
struct addr { char name[40]; char street[40]; char city[30];
};
11 – 19
//имя
//адрес
Создание списка адресов: list <addr> obj(a1);