多项式相加的链表实现
program ex11_5b;
type
link=^node;
node=record
zhi,xi:integer;
nxt:link;
end;
var
a,b:link;
n:integer;
procedure createfifo(var c:link);{建立多项式系数、指数链表}
var
p:link;
i:integer;
begin
new(p);
readln(p^.xi,p^.zhi);
c:=p;
for i:=1 to n-1 do
begin
new(p^.nxt);p:=p^.nxt;readln(p^.xi,p^.zhi);
end;
p^.nxt:=nil;
end;
begin
write('One : '); readln(n); createfifo(a);
write('Two : '); readln(n); createfifo(b);
write('Result is ');
while (a<>nil) and (b<>nil) do
begin
if a^.zhi>b^.zhi then
begin
if a^.xi<0 then write(#8' '#8);
write(a^.xi,'x',a^.zhi,'+');
a:=a^.nxt;
end
else
if a^.zhi
begin
if b^.xi<0 then write(#8' '#8);
write(b^.xi,'x',b^.zhi,'+');
b:=b^.nxt;
end
else
begin
if b^.xi+a^.xi<>0 then
begin
if b^.xi+a^.xi<0 then write(#8' '#8);
write(b^.xi+a^.xi,'x',b^.zhi,'+');
end;
b:=b^.nxt;
a:=a^.nxt;
end;
end;
while a<>nil do
begin
if a^.xi<0 then write(#8' '#8);
write(a^.xi,'x',a^.zhi,'+');
a:=a^.nxt;
end;
while b<>nil do
begin
if b^.xi<0 then write(#8' '#8);
write(b^.xi,'x',b^.zhi,'+');
b:=b^.nxt;
end;
writeln(#8' '#8);
readln;
end.