addsort([H|L1],S,[H|L2],Order):-
addsort(L1,S,L2,Order).
delete([S|T],S,T).
delete([H|L1],S,[H|L2]):-delete(L1,S,L2).
deleteall(_):-main([]).%при удалении
элементов из любого списка вызвать предикат
main с аргументом в виде пустого списка
strge(G,L):-G>L.
strge(G,L):-G=L.
sort([],[],_).
sort([H|L],L2,Order):-
sort(L,L1,Order),addsort(L1,H,L2,Order).
writelist([]).
writelist([S]):-write(S).
writelist([H|T]):-
write(H,","),writelist(T).
revers([],[]).
revers([H|T],L):-
revers(T,T1),addend(T1,H,L).
/*создание меню*/
runmenu:-
/*makewindow(3,12,12,"Обработка
cписков",0,0,25,80),
makewindow(2,30,31,"Меню",9,20,10,40),*/
write("0. Выход\n"),
write("1. Добавить элемент в начало\n"),
write("2. Добавить элемент в конец\n"),
write("3. Удалить элемент из списка\n"),
write("4. Удалить все элементы\n"),
write("5. Отсортировать элементы списка\
n"),
write("6. Список в обратном порядке\n"),
main([]).
/*Предикат main(L) выводит на экран
полученный список
читает номер пункта меню и запускает
соответствующую операцию работы со списком
oper(L,C)*/
main(L):-writelist(L),
write("\nВыберите
пункт:"),readint(C),oper(L,C).
oper(_,0):-write("Обработка закончена,
нажмите Esc"),exit.
oper(L,1):-write("Какой элемент добавить в
начало?"),readitem(I),addfront(L,I,L1),wri
te("Полученный список"),main(L1).
oper(L,2):-write("Какой элемент добавить в
конец?"),readitem(I),addend(L,I,L1),write(
"Полученный список"),main(L1).
oper(L,3):-write("Какой элемент
удалить?"),readitem(I),delete(L,I,L1),writ
e("Полученный список"),main(L1).
oper(L,4):-deleteall(L).
oper(L,5):-