ВУЗ:
Составители:
Рубрика:
- 33 -
else
begin q:=L; {поиск подходящего места для вставки}
while (q↑.next< > nil) and (q↑.elem <= x)do
q:=q↑.next;
if q↑.elem <= x then {вставка в конец списка}
begin
p↑.elem:= x;
p↑.next:= nil;
q↑.next:= p
end
else {вставка x перед q↑.elem}
begin
p↑.next:= q↑.next;
q↑.next:= p;
p↑.elem:= q↑.elem;
q↑.elem:= x
end
end
end;
Задача 7. Описать рекурсивную процедуру count(L,e), которая
подсчитывает число вхождений элемента e в список L.
Решение
Если список пуст, то число вхождений элемента e в список L равно
нулю. Для непустого списка нужно подсчитать, сколько вхождений имеется в
«хвосте» списка,
и прибавить единицу или ноль в зависимости от того,
совпадает ли «голова» с элементом e.
function count(L:list;e:elemtype):integer;
{подсчитывает число вхождений элемента e в список L}
begin
if L = nil then count:=0
else count:=count(L↑.next,e)+ord(L↑.elem=e)
end;
Задача 8. Описать рекурсивную функцию copy(L), которая строит копию
списка L, возвращая ссылку на первое звено построенного списка
или nil, если
L пуст.
Решение
function copy(L:list):list;
{возвращает ссылку на копию списка L}
var head:link;
begin
else begin q:=L; {поиск подходящего места для вставки} while (q↑.next< > nil) and (q↑.elem <= x)do q:=q↑.next; if q↑.elem <= x then {вставка в конец списка} begin p↑.elem:= x; p↑.next:= nil; q↑.next:= p end else {вставка x перед q↑.elem} begin p↑.next:= q↑.next; q↑.next:= p; p↑.elem:= q↑.elem; q↑.elem:= x end end end; Задача 7. Описать рекурсивную процедуру count(L,e), которая подсчитывает число вхождений элемента e в список L. Решение Если список пуст, то число вхождений элемента e в список L равно нулю. Для непустого списка нужно подсчитать, сколько вхождений имеется в «хвосте» списка, и прибавить единицу или ноль в зависимости от того, совпадает ли «голова» с элементом e. function count(L:list;e:elemtype):integer; {подсчитывает число вхождений элемента e в список L} begin if L = nil then count:=0 else count:=count(L↑.next,e)+ord(L↑.elem=e) end; Задача 8. Описать рекурсивную функцию copy(L), которая строит копию списка L, возвращая ссылку на первое звено построенного списка или nil, если L пуст. Решение function copy(L:list):list; {возвращает ссылку на копию списка L} var head:link; begin - 33 -
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »