tengo k implementar un TAD polinomio :

TYPE
Tpolinomio = ^polinom;

polinom = RECORD

grado:integer;
coeficiente:real;
sig:Tpolinomio;


end;



procedure polinomiovacio(var p:Tpolinomio);

procedure insertarcampo(var pol:Tpolinomio;gradopol:integer;coefpol:real);

procedure crear(var p:Tpolinomio);

procedure imprimir(p:Tpolinomio);

procedure sumar(p1,p2:Tpolinomio; var p3:Tpolinomio);

function evaluar(p:Tpolinomio; x:real):Real;

{procedure multiplicar(p1,p2:Tpolinomio; var p3:Tpolinomio); }

procedure liberarmemoria(p:Tpolinomio);


con las operaciones ahi peustas, la duda me surge a la hora de hacer el proce sumar

lo tengo que hacer mediante recursividad y respetando la estructura LIFO (pila), y he estado pensando pero no se me ocurre nada en concreto, les rogaría que me aporten ideas frescas,muchas gracias, me urge