Динамические Структуры Данных В Языке Си

vladis222

Active member
06.12.2011
31
0
#1
Объясните пож-та, вот у меня задание, нужно создать новый список из входного списка, исключая повторяющиеся элементы. Например, L1=(b,a,c,a) формируется список L2(b,c). Каков порядок действия работы с односвязными списками?Просто в методичке там такой огромный и непонятный, код что мама не горюй)))
 
M

mikhail404

#2
Объясните пож-та, вот у меня задание, нужно создать новый список из входного списка, исключая повторяющиеся элементы. Например, L1=(b,a,c,a) формируется список L2(b,c). Каков порядок действия работы с односвязными списками?Просто в методичке там такой огромный и непонятный, код что мама не горюй)))
Пишите: mikhail_404@mail.ru
 
R

rrrFer

#3
пишешь функцию поиска элемента в списке.
Если список пуст - возвращаешь пустой список в качестве результата.
Список разделяешь на голову и хвост.
ищешь голову в хвосте, если найдена - игнорируешь голову, а хвост используешь как аргумент в рекурсивном вызове
если же элемент в хвосте не найден - то точно также рекурсивно вызываешь функцию для хвоста, а к результату, которая вернет функция, добавляешь голову.
На Си мне писать лень, тем более, что сами вы не пытались, на прологе вот(можете попробовать перевести) :
Код:
member( [H|_], H ):-!. 
member( [_|T],E ):-		
member(T,E).
del( [], [] ).		
del( [H|T], R ) :-	
member( T, H ),!,
del( T, R ).
del( [H|T], [H|R] ):-
del( T, R ).