iamakulov icon

Untitled

iamakulov | PRO | 03/23/14 12:52:27 PM UTC | 0 ⭐ | 473 👁️ | Never ⏰ | []
C |

4.1 KB

|

None

|

0 👍

/

0 👎

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);                                                      //Освобождение памяти
        }
    }
    
}

Comments