ListNode :: Print () {
data-> Print ();// предпологается наявність методу Print () для класу
// ім'я якого буде підставлений в призначеному для користувача коді
}
// Опис класу-шаблону завершено, далі йдуть функції-шаблону, що працюють
// не з окремим елементом, а з усіма списком ListAdd (ListNode * head, ListNode * li) {
// додавання нового елемента li у хвіст списку з головою head * old, * v;
// шукаємо зовнішній хвіст списку (v = head; v! = NULL; v = v-> Next ())
old = v;
old-> PutNext (li);// додаємо в слід за знайденим хвостом новий елемент списку
} * ListDelete (ListNode * head, ListNode * li) {
// видалення елемента li зі списку з голоиой head
// функція повертає покажчик на голову нового списку
// int j;
ListNode * old, * o1;
if (li == head) {
// видаляється елемент може бути головою списку
// в цьому р зі ае голова у списку змінюється
o1 = head-> Next ();
delete li;
return o1;
}
// видаляється елемент не являеться головою списку. Голова остається колишня
for (ListNode * v = head; v! = li; v = v-> Next ())
// пошук елемента що передує удаляемому
old = v;
o1 = li-> Next ();
old-> PutNext (o1);
// попередній елеіент тепер В«бачитьВ» елемент стоїть у списку слідом
// за віддаленим
delete li;
return head;
}
// друк всіх елементів списку з головою head ListPrint (ListNode * head) {
for (ListNode * v = head; v! = NULL; v = v-> Next ())
v-> Print ();// підрахунок кількості елементів у списку з головою head
} ListCount (ListNode * head) {
int i; i = 0;
for (ListNode * v = head; v! = NULL; v = v-> Next ()) {
v-> Print ();
i + +;
}
return i;
}
Лістинг програми функція main ()
# include "stdafx.h"
# include "iostream"
# define N 32014// кількість днів - такті...