При работе с числами многократной точности (как и с другими типами данных) полезно иметь процедуру, приводящую их к каноническому виду. По существу, алгоритм приведения числа многократной точности сводится к просмотру списка. При этом отслеживается, чтобы содержимое каждого узла (поле Info) лежало в допустимых пределах, и старший разряд был отличен от нуля. Приведем пример программы нормализации числа многократной точности, записанного в сокращенной системе счисления по основанию p>2. Число представлено списком Z (см. рис.8). Пусть программа D(a,b) по числу a+b формирует равное ему число a+bp, причем a- целое число, удовлетворяющее
.
Begin
If Z
nil then{
t:=Z.last;b:=0;u:=nil;
Repeat
D(t^.next^.Info,b);
If t^.next^.info=0 then u:=t else u:=nil;
If (t^.next=Z.last)and(b
0) then {AddToEnd(Z,b);b:=0;}
Until t=Z.last;
If u
nil then DelEnd(Z,u)}
end;
Трудоемкость этой процедуры пропорциональна длине нормализуемого числа.