47918 (751218), страница 2
Текст из файла (страница 2)
end
else {якщо список не порожнiй
перевiрка впорядкованостi списку}
if reg<=first^. number then {якщо нове значення менше iснуючого}
{вставка нового елемента на початку списку}
begin newptr^.next:=first;
first:=newptr;
end
else {якщо нове значення бiльше iснуючих}
{пошук потрiбного мiсця вставки }
begin
curr:=first; {покажчик поточного елемента вказує на перший}
repeat
prev:=curr; {покажчик попереднього елемента вказує на
поточний елемент}
curr:=curr^.next; {покажчик поточного елемента вказує на
наступний елемент}
if curr=nil
then done:=true
else done:=curr^.number>=reg;
until done; {переадресацiя пари покажчикiв до тих пiр, поки значення
даних, що введене, бiльше за тих, що є в списку: until curr^.number>=reg;}
{вставка нового елемента }
prev^.next:=newptr;
newptr^.next:=curr;
end
end; { кiнець процедури insert}
{вилучення елемента iз списку, перший елемент вилучається останнiм}
procedure delete;
begin
if first=nil then {якщо список порожнiй}
begin
writeln('List is empty.Press ENTER...');
readln;
end
else {якщо список не порожнiй}
begin
write('input element:');
readln(reg); {ввiд значення, що вилучається }
curr:= first;
if curr^.number=reg then {якщо потрiбний елемент знайдений}
first:=curr^.next {вилучення елемента }
else
repeat {пошук потрiбного елемента }
prev:=curr; {перепризначення покажчикiв }
curr:=curr^.next; {покажчик на попереднiй елемент стає
поточним покажчиком, покажчик на
поточний елемент вказує на наступний}
until (curr^.number=reg) or (curr^.next=nil);
{вилучення знайденого елемента та звiльнення пам'ятi}
if curr^.number=reg then {якщо елемент списку спiвпадає з заданим}
begin
prev^.next:=curr^.next; {переадресацiя покажчикiв}
dispose(curr); end {звiльнення пам'ятi}
else
begin {якщо елемент не знайдено}
writeln(reg,' not found in list. Press ENTER...'); {вивiд повiдомлення}
readln;
end;
end;
end; { кiнець процедури delete }
{ вивiд списку на екран }
procedure outlist;
begin
curr:=first; {поточний покажчик вказує на перший}
if curr=nil then writeln('List is empty')
else begin
writeln(' output list:');
repeat
write(curr^.number,' '); {вивiд значення елемента }
curr:=curr^.next; {поточним стає покажчик на наступний елемент} until curr=nil;
{вивiд значень, поки є елементи в списку}
end;
writeln;
end;
begin {**** головна програма ******}
first:=nil; {початок списку- список порожнiй }
repeat
clrscr; outlist; {очищення екрана, виведення списку}
writeln('I- input D- delete Q- quit');
write('input command:');
readln(ch);
ch:=upcase(ch);
case ch of
'I': Insert;
'D': delete;
end;
until ch='Q';
end.