ВУЗ:
Составители:
Рубрика:
- 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
- …
- следующая ›
- последняя »
