Сложение (вычитание) чисел разобраны выше, при рассмотрении систем счисления. При вычислении суммы возникают вопросы – для суммы создавать новый список, или сумму формировать на месте одного из слагаемых? Ниже приведена процедура Add в которой для суммы создается новый список.
Procedure Add(Sum,S1,S2)
Begin
if S2=nil then Copy(Sum,S1)
else if S1=nil then Copy(Sum,S2)
else{t:=S1.last;u:=S2.last;SetEmpty(Sum);
Repeat
t:=t^.next;u:=u^.next;AddToEnd(Sum,t^.info+u^.info)
until (t=S1.last)or(u=S2.last);
if u=S2.last then u:=S1.last
else { t:=u;u:=S2.last}
while t
u do{t:=t^.next;AddToEnd(Sum,t^.info)}
norm(Sum)}
End
Трудоемкость алгоритма сложения пропорциональна длине наибольшего слагаемого.
Вычитание реализуется аналогично сложению