RE:Sumar dos listas enlazadas
aqui lo que tienes que hacer es preever cuando una lista se acaba para hacer un ciclo hasta que se termine la lista que falta, por ejemplo, para sumar dos listas del mimo tamaño, haces mas o menos esto
sum:=0;
while lista1 <> nil do begin
sum:=sum+lista1^.numero+lista2^.numero
lista1:=lista1^.sig;
end
entonces lo que hay que hacer es preguntar, si alguan de las listas se queda vacia, para empezar a sumar solo la que queda llena.
procedure sumar(lista:Tlista);
begin
while lista <> nil do begin
sum:=sum+lista^.numero;
lista:=lista^.sig;
end;
end;
sum:=0;
while lista1 <> nil do begin
if lista2 =nil then begin
sumar(lista1)
break;
end;
sum:=sum+lista1^.numero+lista2^.numero
lista1:=lista1^.sig;
lista2:=lista2^.sig;
end;
if lista2 <> nil then
sumar(lista2);
Lo que hace esto es sumar los numeros de las listas mientras lista1 no este vacia, pero dentro del ciclo se pregunta si lista2 esta vacia, si esto es cierto, llama al procedimietno sumar, de lo contrario sigue normal,
al terminar el ciclo, pregunta si lista2 quedo vacia, si no quedo vacia pues se llama al procedimiento sumar.
y sumar es un procdimiento que suma los elementos de una lista. Aunque para este caso mejor suma las listas una por una.
sum:=0;
sumar(lista1);
sumar(lista2);
que al fin y al cabo el resultado es el mismo.