请问高人,关于用连表进行多项式加减

请教高人,关于用连表进行多项式加减
//按照指数降序排列建立并输出多项式,完成相加相减。
//我运行了好象输入输出都没问题,加法也没问题,减法就不对了。请教高人,谢谢
#include   "iostream.h "
#include   <iomanip>
using   namespace   std;

typedef   struct   node                   //链表结构体
{
int   coef;                               //系数
int   exp;                                 //次数
struct   node   *next;
}Node;

Node   *poly_create();                             //创建多项式
void   poly_show(Node   *LA);                   //显示多项式
Node   *poly_add(Node   *LA,Node   *LB);//多项式A+B
Node   *poly_sub(Node   *LA,Node   *LB);//多项式A-B

int   main()
{
Node   *LA,*LB,*LC,*LD;
        printf( "建立一个多项式A!\n ");   //创建A
LA=poly_create();
printf( "建立一个多项式B!\n ");   //创建B
LB=poly_create();
        printf( "A: ");                                   //显示A
        poly_show(LA);
        printf( "B: ");                                   //显示B
        poly_show(LB);
        printf( "A+B: ");                               //A+B
        LC=poly_add(LA,LB);
        poly_show(LC);
        printf( "A-B: ");                               //A-B
        LD=poly_sub(LA,LB);
        poly_show(LD);
return   0;
}

Node   *poly_create()                               //创建多项式
{
Node   *LA,*pa;
        LA=(Node   *)malloc(sizeof(Node));               //初始化头节点
LA-> next=(Node   *)malloc(sizeof(Node));   //生成次节点
pa=LA-> next;                                                       //pa指向次节点
printf( "请输入多项式的项数: ");
int   n;scanf( "%d ",&n);
for(int   i=1;i <n;i++)                                       //逐项输入多项式的n-1项
{
printf( "请输入第%d项系数: ",i);
        scanf( "%d ",&pa-> coef);
        printf( "指数: ");
        scanf( "%d ",&pa-> exp);
pa-> next=(Node*)malloc(sizeof(Node));
pa=pa-> next;
}
printf( "请输入第%d项系数: ",i);                   //输入第n项
scanf( "%d ",&pa-> coef);