📄 新建 文本文档.txt
字号:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define NULL 0
#define OK 1
#define ERROR 0
typedef int Status,ElemType;
typedef struct Node{
float coef;
int expn;
struct Node *next;
}Node,* polynomial;
/*polynomial CreatPolyn(polynomial p,int n){
polynomial p1,s;
int i;
p=(polynomial)malloc(sizeof(Node));
p->next=NULL;
p1=p;
for(i=0;i<n;i++){
s=(polynomial)malloc(sizeof(Node));
p1->next=s;
scanf("%f%d",&s->coef,&s->expn);
s->next=NULL;
p1=s;
printf("\n");
}
return(p);
}*/
polynomial CreatPa(){
polynomial p1,pa,s;
int i ;
float ac[4]={7,3,9,5};
int ae[4]={0,1,8,17};
pa=(polynomial)malloc(sizeof(Node));
pa->next=NULL;
p1=pa;
for(i=0;i<4;i++){
s=(polynomial)malloc(sizeof(Node));
p1->next=s;
s->coef=ac; s->expn=ae;
s->next=NULL;
p1=s;
}
return(pa);
}
polynomial CreatPb(){
polynomial p1,pb,s;
int i ;
float bc[3]={8,22,-9};
int be[3]={1,7,8};
pb=(polynomial)malloc(sizeof(Node));
pb->next=NULL;
p1=pb;
for(i=0;i<3;i++){
s=(polynomial)malloc(sizeof(Node));
p1->next=s;
s->coef=bc; s->expn=be;
s->next=NULL;
p1=s;
}
return(pb);
}
void PrintPolyn(polynomial p){
polynomial p1;
p1=p->next;
if(!p1) {printf("This is an empty polynomial:\n "); return ERROR;}
printf("p=%.2f*x^%d",p1->coef,p1->expn);
p1=p1->next;
while(p1!=NULL){
printf("+%.2f*x^%d",p1->coef,p1->expn);
p1=p1->next;
}
}
void AddPolyn(polynomial pa,polynomial pb){ /*两个多项式相加,相加后把结果存在pa中*/
polynomial ha,hb,hc,q;
ha=pa->next; hb=pb->next; hc=pa;
while(ha&&hb){
if(ha->expn<hb->expn){ /*如果pa的系数大*/
hc->next=ha; ha=ha->next; hc=hc->next;
}
else if(ha->expn>hb->expn){
hc->next=hb; hb=hb->next; hc=hc->next;
}
else{
ha->coef+=hb->coef;
if(ha->coef){
hc->next=ha; ha=ha->next; hc=hc->next;
q=hb; hb=hb->next; free(q);
}
else{
q=ha; ha=ha->next; free(q);
q=hb; hb=hb->next; free(q);
}
}
} /*结束后至少有一个多相式被处理*/
if(ha) hc->next=ha;
if(hb) hc->next=hb;
pb->next=NULL;
free(pb); /*释放pb的头指针*/
}
polynomial MultiPolyn(polynomial pa,polynomial pb){ /*多项式相乘*/
polynomial pc,pd,p;
Node *p0,*p1,*p2;
pd=(polynomial)malloc(sizeof(Node));
pd->next=NULL;
p1=pa->next;
p2=pb->next;
while(p1!=NULL){
pc=(polynomial)malloc(sizeof(Node));
pc->next=NULL;
p0=pc;
while(p2!=NULL){
p=(polynomial)malloc(sizeof(Node));
p->coef=p1->coef*p2->coef;
p->expn=p1->expn+p2->expn;
p->next=p0->next;p0->next=p;p0=p0->next;
p2=p2->next;
}
AddPolyn(pd,pc);
p1=p1->next;
p2=pb->next;
}
/*PrintPolyn(pd);
printf("\n");*/
return(pd);
}
void main(){
polynomial p1,pa,pb,p;
int n1=4,n2=3;
clrscr();
printf("\n\nNow the programming begin:\n");
pa=CreatPa();
PrintPolyn(pa);
printf("\n");
pb=CreatPb();
PrintPolyn(pb);
printf("\n");
p=MultiPolyn(pa,pb);
printf("\nAfter multipolyn pa and pb:\n");
PrintPolyn(p);
printf("\n\nNow Add pa and pb\n");
AddPolyn(pa,pb);
printf("\nAfter add pb and pb ,the pa become:\n");
PrintPolyn(pa);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -