лементи в список;
потік, що видаляє елементи зі списку;
потік, що змінює існуючі елементи;
потік, який читає інформацію списку (виводить список на екран).
ДОДАТОК Б
Лістинг програми
// ---------------------------------------- -----------------------------------
// HEADER.H
// ---------------------------------------- ----------------------------------- struct node// вузол списку, що складається з цілого числа і покажчика на наступний елемент
{number; node * next;
} Node, * pnode; struct list// структура односвязного кільцевого списку
{nodes;// кількість вузлів у списку * end;// покажчик на останній елемент у списку * beg;// покажчик на перший елемент у списку
} List, * pList; struct params// структура для передачі параметрів потоку
{* pq;// покажчик на спісокhp;// покажчик на купу
} Params; InitialList (List * pq, HANDLE hp);// ініціалізація спіскаAddElem (List * pq, HANDLE hp, int n);// додавання вузла з number =
n в кінець спіскаEraseElem (List * pq, HANDLE hp, int n);// видалення вузла з number =
nChangeElem (List * pq, HANDLE hp, int o, int n);// зміна вузла з
number = o на вузол з number = nPrint (const List * pq, HANDLE hp);// вивід всіх вузлів списку на
екранThreadAdd (void * p);// потік додавання узловThreadErase (void * p);// потік видалення узловThreadChange (void * p);// потік зміни вузлів
void ThreadPrint (void * p);// потік виведення всіх вузлів списку на екран
// ---------------------------------------- -----------------------------------
// LFUN.CPP - містить тіла функцій роботи зі списком
// ---------------------------------------- -----------------------------------
# include
# include
# include
# include
# include
# include
# include
# include
# include "header.h" namespace std;
InitialList (List * pq, HANDLE hp)// ініціалізація списку
{= HeapCreate (0, 0x1000, 0x10000);// створення купи для списку> beg = NULL;// ініціалізація покажчиків початку і кінця списку> end = NULL;> nodes = 0;//ініціалізація лічильника узловhp;
}
bool AddElem (List * pq, HANDLE hp, int ...