Вставить элемент в конец списка на Prolog

Помечено: , ,

В этой теме 1 ответ, 2 участника, последнее обновление  Васильев Владимир Сергеевич 1 год, 5 мес. назад.

  • Автор
    Сообщения
  • #2794

    questioner
    Участник

    Нужно написать на языке Prolog предикат, выполняющий вставку элемента в конец списка. Со вставкой в начало проблем нет:
    insert_head(Head, Tail, [Head|Tail]).
    Но вставить подобным образом в конец не получается.

  • #2795

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

    На рисунке показана блок-схема алгоритма, выполняющего вставку узла в конец списка. Реализация алгоритма на языке Prolog:

    insert_back_element([], Element, [Element]):-!.
    insert_back_element([Head|Tail], Element, [Head|TailWithElement]):-
      insert_back_element(Tail, Element, TailWithElement).

    Вложения:

Для ответа в этой теме необходимо авторизоваться.