Advertisement
iamakulov

Untitled

Mar 23rd, 2014
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.10 KB | None | 0 0
  1. void Delete_pol()
  2. {
  3.     int kpol;                                                       //значение минимального элемента
  4.     struct Queue *Ppol;             //указатель элемента, предшествующего минимальному
  5.     if (L!=NULL)                                    // очередь не пуста
  6.     {
  7.         kpol=L->Inf;                        //Принимаем первый элемент за Min
  8.         Ppol=L;
  9.         Run=L;                                          //Начало просмотра очереди
  10.         while (Run->Next!=NULL)  //Поиск минимального элемента
  11.         {
  12.             if ( Run->Next->Inf > 0 )
  13.             {
  14.                 kpol=Run->Next->Inf;            //Найден новый Min. Запоминаем его значение
  15.                 Ppol=Run;                                               //и адрес предшествующего элемента
  16.             }
  17.             Run=Run->Next;                                   //Перемещение по очереди
  18.         }
  19.         if (kpol==L->Inf)                                   //Минимум на вершине очереди слева
  20.         { L=L->Next; free(Ppol); }//Удаление левого єлемента
  21.         else
  22.         {                                                                               //Удаление произвольного єлемента(в т.ч. и правого)
  23.             if ( Ppol->Next == R )
  24.             R=Ppol;                                                         //перенос R при удалении последнего элемента
  25.             Run=Ppol->Next;
  26.             Ppol->Next=Ppol->Next->Next;//Изменение связей элементов в средине очереди
  27.             free(Run);                                                      //Освобождение памяти
  28.         }
  29.     }
  30.    
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement