Алгоритм  программы переупорядочивания списка с перестановкой найденного элемента в начало

Приведенный алгоритм предусматривает возможность перестановки в начало списка любого по счету найденного элемента списка, а также случай, когда найденный элемент в списке первый и перестановка не нужна.

q= nil

p = table

while (p <> nil) do

  if key = k(p) then

    search = p

    if q = nil

      then 'перестановка не нужна'

              return

    endif

  nxt(q) = nxt(p)

  nxt(p) = table

  table = p

  return

  endif

   q = p

   p = nxt(p)

endwhile

search = 0

return

 

Алгоритм метода транспозиции

Нижеприведенный алгоритм описывает метод транспозиции для  любого по счету найденного элемента списка, а также случай, когда найденный элемент в списке первый и перестановка не нужна.

s = nil

q = nil

p = table

while (p <> nil) do

            if key = k(p) then

    нашли, транспонируем

                              if q = nil then

       ‘ переставлять не надо

                              return

                              endif

                              nxt(q) = nxt(p)

                              nxt(p) = q   

if s = nil then

                     table = p

                     else

                     nxt(s) = p

                     search = p

            endif

                     return

    endif

s =q

q = p

p = nxt(p)

endwhile

search = nil

return