Використання вільної пам'яті, Детальна інформація
Використання вільної пам'яті
В обох цих випадках s вставляється після елемента ssk.
Нехай результат лексикографічного порівняння рядків s1 і s2 обчислюється при виконанні виклику функції lt(s1, s2) – див. задачу 12.9.
:
D
V
Z
\x00D0
Ue
¬
та списку Newelem. Аргументами в її виклику є вказівник типу Tple та вираз типу str. За виконання її виклику створюється новий елемент списку, в його поля записуються значення аргументів, після чого аргумент-вказівник установлюється на цей елемент:
procedure newelem(var p : Tple; z : str);
var pp : Tple;
begin
new(pp); pp^.next:=p; pp^.v:=z; p:=pp
end;
З використанням цієї процедури наведений алгоритм уточнюється такою процедурою:
procedure addord ( s : str; var h : TPle );
var p, pp : TPle; stop : boolean;
begin
if h = nil then {Список порожній – створюється новий елемент }
newelem ( h, s ); {і стає головним}
else
if lt ( s, h^.v ) then { Вставка перед першим елементом – }
newelem ( h, s ) {новий елемент стає головним}
else
begin { Пошуки місця для вставки }
stop := false; p := h;
while ( p^.next <> nil ) and not stop do
if lt(s, p^.next^.v) then stop := true
else p := p^.next;
Нехай результат лексикографічного порівняння рядків s1 і s2 обчислюється при виконанні виклику функції lt(s1, s2) – див. задачу 12.9.
:
D
V
Z
\x00D0
Ue
¬
та списку Newelem. Аргументами в її виклику є вказівник типу Tple та вираз типу str. За виконання її виклику створюється новий елемент списку, в його поля записуються значення аргументів, після чого аргумент-вказівник установлюється на цей елемент:
procedure newelem(var p : Tple; z : str);
var pp : Tple;
begin
new(pp); pp^.next:=p; pp^.v:=z; p:=pp
end;
З використанням цієї процедури наведений алгоритм уточнюється такою процедурою:
procedure addord ( s : str; var h : TPle );
var p, pp : TPle; stop : boolean;
begin
if h = nil then {Список порожній – створюється новий елемент }
newelem ( h, s ); {і стає головним}
else
if lt ( s, h^.v ) then { Вставка перед першим елементом – }
newelem ( h, s ) {новий елемент стає головним}
else
begin { Пошуки місця для вставки }
stop := false; p := h;
while ( p^.next <> nil ) and not stop do
if lt(s, p^.next^.v) then stop := true
else p := p^.next;
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021