Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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); //Освобождение памяти
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement