p> 
 далі 
  {= curr; = curr-> next; 
 }// якщо текушего дорівнює шуканого 
  {
  if (curr == pq-> end)> beg = lcurr;> next = curr-> next; (hp, 0, curr);// звільнення блоку пам'яті> nodes -;// декремент лічильника об'єктів < 
 HeapUnlock (hp);// відміна блокування купи для інших потоків 
  return true; 
 } 
 } <<"there is no such node in list, erase failed" < 
 HeapUnlock (hp);// відміна блокування купи для інших потоків 
  return false; 
 } 
  ChangeElem (List * pq, HANDLE hp, int o, int n)// зміна вузла з 
  number = o на вузол з number = n 
  {fl = HeapLock (hp);// блокування доступу до купи списку інших 
  потоків (fl == 0)// якщо блокувати не вдалося 
  {<<"change failed" < 
} * curr; (pq-> nodes == 0)// якщо контактів немає 
  {<<"list is empty, change failed" < 
 HeapUnlock (hp);// відміна блокування купи для інших потоків 
  return false; 
 } = pq-> beg; it_count = pq-> nodes; (it_count> 0)// пошук елемента 
  {
				
				
				
				
			  if (curr-> number! = o)// якщо не знайшли - рух далі за списком 
  {= curr-> next; 
 }// якщо знайшли 
  {> number = n;// зміна значення елемента 
  cout < 
 HeapUnlock (hp);// відміна блокування купи для інших потоків 
  return true; 
 } _count -; 
 } <<"there is no such node in list, change failed" < 
 HeapUnlock (hp);// відміна блокування купи для інших потоків 
  return false; 
 } 
  Print (const List * pq, HANDLE hp) 
  {fl = HeapLock (hp);// блокування доступу до купи списку інших 
  потоків (fl == 0)// якщо блокувати не вдалося 
  {<<"print failed" < 
} * curr; (pq-> nodes == 0)// якщо контактів немає 
  {<<"list is empty, there is nothing to print" < 
 HeapUnlock (hp);// відміна блокування купи для інших потоків 
  return false; 
 } = pq-> beg; < number; = curr-> next; 
  while (curr! = pq-> beg)// вивід всіх елементів списку на екран 
  {<<'' < number; = curr-> next; 
 } <<...