void Delete_pol() { int kpol; //значение минимального элемента struct Queue *Ppol; //указатель элемента, предшествующего минимальному if (L!=NULL) // очередь не пуста { kpol=L->Inf; //Принимаем первый элемент за Min Ppol=L; Run=L; //Начало просмотра очереди while (Run->Next!=NULL) //Поиск минимального элемента { if ( Run->Next->Inf > 0 ) { kpol=Run->Next->Inf; //Найден новый Min. Запоминаем его значение Ppol=Run; //и адрес предшествующего элемента } Run=Run->Next; //Перемещение по очереди } if (kpol==L->Inf) //Минимум на вершине очереди слева { L=L->Next; free(Ppol); }//Удаление левого єлемента else { //Удаление произвольного єлемента(в т.ч. и правого) if ( Ppol->Next == R ) R=Ppol; //перенос R при удалении последнего элемента Run=Ppol->Next; Ppol->Next=Ppol->Next->Next;//Изменение связей элементов в средине очереди free(Run); //Освобождение памяти } } }