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;
} <<...