Динамические структуры данных. Задание практикума. Язык Паскаль. Вылиток А.А - 13 стр.

UptoLike

- 13 -
равна maxlen; нельзя удалять из пустого списка; необходимо правильно
задавать номер i элемента в списке: 1i
last. Проверку условий для
корректной работы со списками реализуем в виде логических функций:
function is_full(var L: list):boolean;
{ возвращает истину, если длина списка максимальна,
иначеложь}
begin
is_full:=L.last=maxlen
end; {is_full}
function is_empty(var L: list):boolean;
{ возвращает истину, если список пуст, иначеложь}
begin
is_empty:=L.last=0
end; {is_empty}
function is_valid(var L: list;i:integer):boolean;
{ возвращает истину, если в списке есть i-й элемент,
иначе - ложь }
begin
is_valid:=(1<=i) and (i<=L.last)
end; {is_valid}
Опишем также логическую функцию is_present(L, x), проверяющую,
есть ли элемент x в списке L.
function is_present(var L: list; x: elemtype):boolean;
{ возвращает истину, если элемент со значением x
присутствует в списке, иначеложь}
var found:boolean;
p:integer;
begin
found:= false;
p:=1;
while not found and (p <= L.last) do
begin
found:= x = L.elems[p];
p:= p+1
end;
is_present:= found
end; {is_present}
Рассмотрим работу этой функции для разных случаев. Если список L пуст
(L.last=0), цикл в теле функции не выполнится ни разу, так как условие
p<=L.last ложно, и функция возвращает значение «ложь». Если элемент со
значением x присутствует в списке, то переменная found после нескольких
повторений тела цикла получит значение «истина», и цикл завершится, так как
равна maxlen; нельзя удалять из пустого списка; необходимо правильно
задавать номер i элемента в списке: 1 ≤ i ≤ last. Проверку условий для
корректной работы со списками реализуем в виде логических функций:

function is_full(var L: list):boolean;
 { возвращает истину, если длина списка максимальна,
   иначе – ложь}
  begin
    is_full:=L.last=maxlen
  end; {is_full}

function is_empty(var L: list):boolean;
 { возвращает истину, если список пуст, иначе – ложь}
  begin
    is_empty:=L.last=0
  end; {is_empty}

function is_valid(var L: list;i:integer):boolean;
 { возвращает истину, если в списке есть i-й элемент,
   иначе - ложь }
  begin
    is_valid:=(1<=i) and (i<=L.last)
  end; {is_valid}

Опишем также логическую функцию is_present(L, x), проверяющую,
есть ли элемент x в списке L.

function is_present(var L: list; x: elemtype):boolean;
 { возвращает истину, если элемент со значением x
   присутствует в списке, иначе – ложь}
var found:boolean;
        p:integer;
  begin
    found:= false;
    p:=1;
    while not found and (p <= L.last) do
      begin
       found:= x = L.elems[p];
       p:= p+1
      end;
    is_present:= found
  end; {is_present}

Рассмотрим работу этой функции для разных случаев. Если список L пуст
(L.last=0), цикл в теле функции не выполнится ни разу, так как условие
p<=L.last ложно, и функция возвращает значение «ложь». Если элемент со
значением x присутствует в списке, то переменная found после нескольких
повторений тела цикла получит значение «истина», и цикл завершится, так как

                                   - 13 -