Хелпикс

Главная

Контакты

Случайная статья





Поиск элемента в списке. Исключение из рассмотрения элемента списка. Добавление элемента в конец списка



 

Формирование списка из файла Отметим, что первый элемент создается отдельно и затем не меняется. Program список; Type ссылка=^элсписка; элсписка=record фам: string; адрес: ссылка; end; var F: file of string; начало, конец, очередэл, новэл: ссылка; искфам, новфам: string; begin assign(F, ’досье’); reset(F); начало: = NIL; конец: =NIL; while not eof(F) do begin if начало=NIL then {создание 1-ого элем} begin New(очередэл); read(F, очередэл^. фам); очередэл^. адрес: =конец; начало: =очередэл; end; else {очередной элемент} begin New(вспомэл); read(F, вспомэл^. фам); очередэл^. адрес: =вспомэл; вспомэл^. адрес: =конец; очередэл: =вспомэл; end; end; {от while} end.  

Поиск элемента в списке

Считываем адрес и проверяем, не NIL ли он.

Program список;

Type ссылка=^элсписка;

элсписка=record

фам: string;

адрес: ссылка; end;

var F: file of string;

начало, конец, очередэл, новэл: ссылка;

искфам, новфам: string;

begin assign(F, ’досье’);

reset(F);

начало: = NIL;

конец: =NIL;

while not eof(F) do

begin if начало=NIL then {создание 1-ого эл}

begin

New(очередэл);

read(F, очередэл^. фам);

очередэл^. адрес: =конец;

начало: =очередэл;

end;

else {очередной элемент}

begin

New(вспомэл);

read(F, вспомэл^. фам);

очередэл^. адрес: =вспомэл;

вспомэл^. адрес: =конец;

очередэл: =вспомэл;

end;

end; {от while}

{закончили создание списка,

 переходим к поиску фамилии в списке}

read(искфам); {эту фамилию будем искать}

очередэл: =начало;

while (искфам< > очередэл^. фам) and

(очередэл< > NIL) do {спускаемся вниз по списку}

очередэл: =очередэл^. адрес;

{когда мы вышли из цикла у нас 2 варианта}

if очередэл^. фам=искфам then writeln(‘есть’);

else writeln(‘нет’); end.

 

Исключение из рассмотрения элемента списка

Program список;

Type ссылка=^элсписка;

элсписка=record

фам: string; адрес: ссылка; end;

var F: file of string;

начало, конец, очередэл, новэл: ссылка;

искфам, новфам: string;

begin assign(F, ’досье’);

reset(F);

начало: = NIL;

конец: =NIL;

while not eof(F) do

begin if начало=NIL then {созда 1-ого эл}

begin               New(очередэл);

read(F, очередэл^. фам);

очередэл^. адрес: =конец;

начало: =очередэл;

end else {очеред элемент}

begin New(вспомэл);

read(F, вспомэл^. фам);

очередэл^. адрес: =вспомэл;

вспомэл^. адрес: =конец;

очередэл: =вспомэл; end;

end; {от while}

read(искфам);

очередэл: =начало;

while (искфам< > очередэл^. фам) and (очередэл< > NIL) do очередэл: =очередэл^. адрес;

if очередэл^. фам=искфам then

очередэл: =очеред^. адрес;

{«перепрыгиваем» через найденный элемент} end.

 

Добавление элемента в конец списка

Program список;

Type ссылка=^элсписка;

элсписка=record

фам: string;

адрес: ссылка; end;

var F: file of string;

начало, конец, очередэл, новэл: ссылка;

искфам, новфам: string;

begin assign(F, ’досье’);

reset(F);

начало: = NIL;

конец: =NIL;

while not eof(F) do begin

if начало=NIL then {созд 1-ого эл}

begin New(очередэл);

read(F, очередэл^. фам);

очередэл^. адрес: =конец;

начало: =очередэл; end;

else {очередной элемент}

begin

New(вспомэл);

read(F, вспомэл^. фам);

очередэл^. адрес: =вспомэл;

вспомэл^. адрес: =конец;

очередэл: =вспомэл; end;

end; {от while}

{закончили создание списка}

read(новфам);

очередэл: =начало;

while очередэл< > конец do

очередэл: =очередэл^. адрес;

{спустились по списку до конца}

New(вспомэл);

очередэл^. адрес: =вспомэл;

{создали новый элемент и обеспечили на него ссылку предыдущего}

вспомэл^. фам: =новфам;

{записали введенную фамилию}

вспомэл^. адрес: =конец;

очередэл: =вспомэл;

end.

 

Включение элемента в нужное место Program список; Type ссылка=^элсписка; элсписка=record фам: string; адрес: ссылка; end; var F: file of string; начало, конец, очередэл, новэл: ссылка; искфам, новфам: string; begin assign(F, ’досье’); reset(F); начало: = NIL; конец: =NIL; while not eof(F) do begin if начало=NIL then {1 эл созд} begin New(очередэл); read(F, очередэл^. фам); очередэл^. адрес: =конец; начало: =очередэл; end;   else {очеред эл} begin New(вспомэл); read(F, вспомэл^. фам); очередэл^. адрес: =вспомэл; вспомэл^. адрес: =конец; очередэл: =вспомэл;   end; end; {от while} {закончили создание списка} readln(новфам); readln(искфам); очередэл: =начало; while (очередэл< > конец) and (очередэл^. фам< > искфам) do очередэл: =очередэл^. адрес; спускаемся по списку if очередэл^. фам=искфам then begin New(новэл); {пока без связей} новэл^. адрес: =очеред^. адрес; {оба ссылаются на один и тот же элемент} очеред^. адрес: =новэл; новэл^. фам: =новфам; очередэл: =новэл; end; else writeln(‘нет такой’) end.  

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.