#includelt;stdio.h; 宣告部分:原始碼含有2個檔案
#includelt;malloc.h;
typedef struct pnode // 定義指標//
{int coef; //定義係數//
int exp; //定義指數//
struct pnode *next;
}pnode;
pnode * creat() //creat函式用來存放多項式//
{int m,n;
pnode *head,*rear,*s;
head=(pnode *)malloc(sizeof(pnode));
rear=head;
printf(#92;n輸入指數(按遞增順序輸入):);
scanf(%d,m);
printf(輸入一元式係數(0為退出):);
scanf(%d,n);
do
{
s=(pnode *)malloc(sizeof(pnode));
s-;coef=n; //n為係數//
s-;exp=m; //m為指數//
rear-;next=s;
s-;next=NULL;
rear=s;
}while(n);
return head;
}
pnode * add(pnode *heada,pnode *headb)
{pnode *headc,*a,*b,*s,*rearc;
int sum;
a=heada-;next;b=headb-;next;
headc=(pnode *)malloc(sizeof(pnode));
rearc=headc;
//多項式的存放//都放到s中裡//
while(a!=NULLb!=NULL) //指數相等,則係數相加。//
if(a-;exp==b-;exp)
{ sum=a-;coef+b-;coef;
if(sum)
{s=(pnode *)malloc(sizeof(pnode));
s-;coef=sum;
s-;exp=a-;exp;
rearc-;next=s;
rearc=s;
a=a-;next;
b=b-;next;}
else
{a=a-;next;
b=b-;next;
else if(a-;explt;b-;exp)
//a指數如果小於b,則a放到s中//
{ s=(pnode *)malloc(sizeof(pnode));
s-;coef=a-;coef;
//用下一個結點s取代下一個c//
else //如果a的指數大,則b放到s中//
s-;coef=b-;coef;
s-;exp=b-;exp;
if(a)
{while(a!=NULL) //b空了放a中的項//
else if(b)
{while(b!=NULL) //a空了放b中的項//
}}
return headc;
void main()
{pnode *a,*b,*c;
printf(建立A:);
a=creat();
printf(#92;n建立B:);
b=creat();
c=add(a,b);
c=c-;next;
printf(%dx^%d,c-;coef,c-;exp);
while(c!=NULL)
{printf(+%dx^%d,c-;coef,c-;exp);
#includelt;stdio.h; 宣告部分:原始碼含有2個檔案
#includelt;malloc.h;
typedef struct pnode // 定義指標//
{int coef; //定義係數//
int exp; //定義指數//
struct pnode *next;
}pnode;
pnode * creat() //creat函式用來存放多項式//
{int m,n;
pnode *head,*rear,*s;
head=(pnode *)malloc(sizeof(pnode));
rear=head;
printf(#92;n輸入指數(按遞增順序輸入):);
scanf(%d,m);
printf(輸入一元式係數(0為退出):);
scanf(%d,n);
do
{
s=(pnode *)malloc(sizeof(pnode));
s-;coef=n; //n為係數//
s-;exp=m; //m為指數//
rear-;next=s;
s-;next=NULL;
rear=s;
printf(#92;n輸入指數(按遞增順序輸入):);
scanf(%d,m);
printf(輸入一元式係數(0為退出):);
scanf(%d,n);
}while(n);
return head;
}
pnode * add(pnode *heada,pnode *headb)
{pnode *headc,*a,*b,*s,*rearc;
int sum;
a=heada-;next;b=headb-;next;
headc=(pnode *)malloc(sizeof(pnode));
rearc=headc;
//多項式的存放//都放到s中裡//
while(a!=NULLb!=NULL) //指數相等,則係數相加。//
{
if(a-;exp==b-;exp)
{ sum=a-;coef+b-;coef;
if(sum)
{s=(pnode *)malloc(sizeof(pnode));
s-;coef=sum;
s-;exp=a-;exp;
rearc-;next=s;
rearc=s;
a=a-;next;
b=b-;next;}
else
{a=a-;next;
b=b-;next;
}
}
else if(a-;explt;b-;exp)
//a指數如果小於b,則a放到s中//
{ s=(pnode *)malloc(sizeof(pnode));
s-;coef=a-;coef;
s-;exp=a-;exp;
rearc-;next=s;
//用下一個結點s取代下一個c//
rearc=s;
a=a-;next;
}
else //如果a的指數大,則b放到s中//
{ s=(pnode *)malloc(sizeof(pnode));
s-;coef=b-;coef;
s-;exp=b-;exp;
rearc-;next=s;
rearc=s;
b=b-;next;
}
}
if(a)
{while(a!=NULL) //b空了放a中的項//
{s=(pnode *)malloc(sizeof(pnode));
s-;coef=a-;coef;
s-;exp=a-;exp;
rearc-;next=s;
s-;next=NULL;
rearc=s;
a=a-;next;
}
}
else if(b)
{while(b!=NULL) //a空了放b中的項//
{s=(pnode *)malloc(sizeof(pnode));
s-;coef=b-;coef;
s-;exp=b-;exp;
rearc-;next=s;
s-;next=NULL;
rearc=s;
b=b-;next;
}}
return headc;
}
void main()
{pnode *a,*b,*c;
printf(建立A:);
a=creat();
printf(#92;n建立B:);
b=creat();
c=add(a,b);
c=c-;next;
printf(%dx^%d,c-;coef,c-;exp);
c=c-;next;
while(c!=NULL)
{printf(+%dx^%d,c-;coef,c-;exp);
c=c-;next;
}
}