Приклад 1. Наступна програма демонструє добавляння елемента   на початок списку
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

type

elem=^zapis;

zapis=record

name:string;

next:elem;

end;

var

a1,a:elem;

begin

new(a1);

a1^.name:='Иванов';

a1^.next:=nil;

writeln(a1^.name);

{Добавимо елемент 'Петров' на початок}

writeln('Формування стеку:');

new(a);

a^.name:='Петров';

a^.next:=a1;

write(a^.name,' ');

a:=a^.next;

writeln(a^.name);

end.

Результат роботи програми:

Иванов

Формування стеку:

Петров Иванов

 

Приклад 2. Наступна програма демонструє формування безкінечного стеку.

type

elem=^zapis;

zapis=record

name:string;

next:elem;

end;

var a1,a:elem;

name:string;

begin

 repeat

readln(name);

if name<>'' then

begin

new(a);

a^.name:=name;

a^.next:=a1;

a1:=a;

end;

 until name='';

 while a<>nil do

 begin

writeln(a^.name);

a:=a^.next;

 end;

end.

Результат роботи програми:

елемент1

елемент2

елемент3

елемент4

елемент5

елемент6

 

елемент6

елемент5

елемент4

елемент3

елемент2

елемент1

Розглянемо докладніше як працює з попереднього прикладу структура:

new(a);

a^.name:=name;

a^.next:=a1;

a1:=a;

         

 

 


При повторному виконанні вказівок:

new(a);

a^.name:=name;

a^.next:=a1;

a1:=a;

в пам’яті ПК відбудуться наступні перетворення:

 

 

 


Бачимо, що кожен наступний елемент (Name2) встановлюється на початок списку. Останній елемент, який увійде у стек – перший з нього виходить (він буде на першому місці, тобто при читанні стеку, буде першим).



ЗВ’ЯЗАНИЙ СПИСОК. ЧЕРГА.

Формування черги (вставка елементів в кінець списку).

               
 
Список до внесення елемента «Ільчук» в чергу
 
 
Список після внесення елемента «Ільчук» в чергу

 

 

 


Після створення динамічної змінної s^,поміщаємо в неї «Ільчук». Потім необхідно на цей елемент «напрямити» вказівник елемента sn^ (динамічна змінна sn^  містить вказівник next . А отже, sn^.next:=s;). Після цього елемент «Ільчук» добавиться в кінець списку. Але вказівник sn ще вказує на попередньо останній елемент (тобто на «Сидоров»). Напрямимо його на «Ільчук» (на «Ільчук вказує s. Отже, sn:=s).

Розглянемо схематично дію програмного коду вставки елемента в чергу.

     
 

 

 


type

elem=^zapis;

zapis=record

name:string;

next:elem;

end;

var

s1, s, sn:elem;

begin

 new(s);

 readln(name);

 s^.name:=name;

 s^.next:=nil;

 if s1=nil then s1:=s

 else sn^.next:=s;

 sn:=s;

end.

 

В результаті роботи такої програми три вказівника будуть вказувати на перший елемент черги.

При повторному виконанні вказівок

 new(s);

 readln(name);

 s^.name:=name;

 s^.next:=nil;

 if s1=nil then s1:=s

 else sn^.next:=s;

 sn:=s;

новий елемент s^ буде добавлено в кінець списку. При цьому s1 буде вказувати на перший елемент списку, а s та sn – на добавлений елемент списку (останній елемент).

Розглянемо на схемі повторну дію згаданих вище вказівок:

 

 

                 
 
 

 

 


ТЕКСТ ПРОГРАМИ ФОРМУВАННЯ ЧЕРГИ:

type

elem=^zapis;

zapis=record

name:string;

next:elem;

end;

var s1, s, sn:elem;

name:string;




BEGIN

s1:=nil;  s:=nil;

repeat

 new(s);

 readln(name);

if name<>’’ then begin

     s^.name:=name;

     s^.next:=nil;

     if s1=nil then s1:=s;

     else sn^.next:=s;

     sn:=s;

    end;

until name=’’;

while s1<>nil do begin

  writeln('--',s1^.name);

  s1:=s1^.next;

end;

END .

 

Дата: 2019-05-29, просмотров: 154.