数据结构多项式的加减(方法01)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void print(PLOY *fun) //输出多项式 { PLOY *printing; int flag=0; printing=fun->next; if(fun->next==NULL) { printf("0\n"); return; } while(flag==0) { if(printing->coef>0&&fun->next!=printing) printf("+"); if(printing->coef==1); else if(printing->coef==-1) printf("-"); else printf("%f",printing->coef); if(printing->expn!=0) printf("x^%d",printing->expn); else if((printing->coef==1)||(printing->coef==-1)) printf("1"); if(printing->next==NULL) flag=1;
PLOY *add(PLOY *head,PLOY *pre) //多项式相加 { PLOY *inpt; int flag=0; while(flag==0) { if(pre->next==NULL) flag=1; //跳出循环 else { pre=pre->next; inpt=(PLOY *)malloc(sizeof(PLOY)); inpt->coef=pre->coef; inpt->expn=pre->expn; inpt->next=NULL; insert(head,inpt); // 把当前“g(x)”的链节插入到“y(x)”中 } } return head; }
PLOY *sub(PLOY *head,PLOY *pre) //多项式相减
{ PLOY *inpt; int flag=0; while(flag==0) { if(pre->next==NULL) flag=1; else { pre=pre->next; inpt=(PLOY *)malloc(sizeof(PLOY)); inpt->coef=0-pre->coef; inpt->expn=pre->expn; inpt->next=NULL; insert(head,inpt); } } return head; }
else printing=printing->next; } printf("\n"); }
void start() //用户选择界面
{
printf(" ************************************\n");
printf("
两个一元多项式的加减运算
\n");
printf(" ************************************\n");
printf(" *
*\n");
printf(" *
1.两个一元多项式相加
*\n");
printf(" *
2.两个一元多项式相减
*\n");
printf(" *
3.帮助
*\n");
printf(" *
0.退出系统
*\n");
printf(" *
*\n");
printf(" ************************************\n");
case 2: { printf(" 你选择的操作是多项式相减:\n"); printf(" 请输入第一个多项式 f(x):"); f=creat('f'); printf(" 第一个多项式为:f(x)="); print(f); printf(" 请输入第二个多项式 g(x):"); g=creat('g'); printf(" 第二个多项式为:g(x)="); print(g); printf(" 结果为:F(x)=f(x)-g(x)="); f=sub(f,g); print(f); printf("\n\n"); printf(" 继续请选择相应操作,退出请按 0. "); break; }
printf("
\n");
printf(" 注:输入多项式格式为:系数 1 指数 1 系数 2 指数 2 …… ,并以 0 0 结束:\n");
printf("
\n");
printf(" 请选择操作: ");
}
void main()
{
PLOY *f,*g;
int sign=-1;
start();
while(sign!=0)
}
default: {
printf("看完帮助信息后,请重新选择操作:\n"); break; } } } }
不去庆父,鲁难未已。雄关漫道真如铁,而今迈步从头越。
数据结构多项式的加减(方法 {float coef; int expn; struct node * next; }PLOY;
01).txt
void insert(PLOY *head,PLOY *inpt) //查找位置插入新链节程序 { PLOY *pre,*now; int signal=0; pre=head; if(pre->next==NULL) {pre->next=inpt;} else {now=pre->next; while(signal==0) { if(inpt->expn<now->expn) { if(now->next==NULL) { now->next=inpt; signal=1; } else { pre=now; now=pre->next; } } else if(inpt->expn>now->expn) { inpt->next=now; pre->next=inpt; signal=1; } else { now->coef=now->coef+inpt->coef; signal=1; free(inpt); if(now->coef==0) { pre->next=now->next; free(now);
printf(" 请输入第二个多项式 g(x):");
g=creat('g'); printf(" 第二个多项式为:g(x)="); print(g); printf(" 结果为:F(x)=f(x)+g(x)="); f=add(f,g); print(f); printf("\n\n"); printf(" 继续请选择相应操作,退出请按 0. "); break; }
{ห้องสมุดไป่ตู้
scanf("%d",&sign);
switch(sign)
{
case 0:
break;
case 1:
{
printf(" 你选择的操作是多项式相加:\n");
printf(" 请输入第一个多项式 f(x):");
f=creat('f');
printf(" 第一个多项式为:f(x)=");
print(f);
}}}}}
PLOY *creat(char ch) //输入多项式 { PLOY *head,*inpt; float x; int y; head=(PLOY *)malloc(sizeof(PLOY)); //创建链表头 head->next=NULL; scanf("%f %d",&x,&y); while(x!=0) { inpt=(PLOY *)malloc(sizeof(PLOY)); //创建新链节 inpt->coef=x; inpt->expn=y; inpt->next=NULL; insert(head,inpt); //查找位置并且插入新链节 scanf("%f %d",&x,&y); } return head; }
printf(" 3.例如输入 \"1 1 2 2 0 0\" 表示 \"1*X^1+2*X^2\"
\n");
printf("
\n");
printf("---------------------------帮助------------------------------\n");
printf("\n\n");
case 3:
{
printf("---------------------------帮助------------------------------\n");
printf("
\n");
printf(" 1.输入时只输入多项式的系数与指数
\n");
printf(" 2.输入多项式形式:系数 1 指数 1 系数 2 指数 2 …… ,以 0 0 结束\n");
PLOY *add(PLOY *head,PLOY *pre) //多项式相加 { PLOY *inpt; int flag=0; while(flag==0) { if(pre->next==NULL) flag=1; //跳出循环 else { pre=pre->next; inpt=(PLOY *)malloc(sizeof(PLOY)); inpt->coef=pre->coef; inpt->expn=pre->expn; inpt->next=NULL; insert(head,inpt); // 把当前“g(x)”的链节插入到“y(x)”中 } } return head; }
PLOY *sub(PLOY *head,PLOY *pre) //多项式相减
{ PLOY *inpt; int flag=0; while(flag==0) { if(pre->next==NULL) flag=1; else { pre=pre->next; inpt=(PLOY *)malloc(sizeof(PLOY)); inpt->coef=0-pre->coef; inpt->expn=pre->expn; inpt->next=NULL; insert(head,inpt); } } return head; }
else printing=printing->next; } printf("\n"); }
void start() //用户选择界面
{
printf(" ************************************\n");
printf("
两个一元多项式的加减运算
\n");
printf(" ************************************\n");
printf(" *
*\n");
printf(" *
1.两个一元多项式相加
*\n");
printf(" *
2.两个一元多项式相减
*\n");
printf(" *
3.帮助
*\n");
printf(" *
0.退出系统
*\n");
printf(" *
*\n");
printf(" ************************************\n");
case 2: { printf(" 你选择的操作是多项式相减:\n"); printf(" 请输入第一个多项式 f(x):"); f=creat('f'); printf(" 第一个多项式为:f(x)="); print(f); printf(" 请输入第二个多项式 g(x):"); g=creat('g'); printf(" 第二个多项式为:g(x)="); print(g); printf(" 结果为:F(x)=f(x)-g(x)="); f=sub(f,g); print(f); printf("\n\n"); printf(" 继续请选择相应操作,退出请按 0. "); break; }
printf("
\n");
printf(" 注:输入多项式格式为:系数 1 指数 1 系数 2 指数 2 …… ,并以 0 0 结束:\n");
printf("
\n");
printf(" 请选择操作: ");
}
void main()
{
PLOY *f,*g;
int sign=-1;
start();
while(sign!=0)
}
default: {
printf("看完帮助信息后,请重新选择操作:\n"); break; } } } }
不去庆父,鲁难未已。雄关漫道真如铁,而今迈步从头越。
数据结构多项式的加减(方法 {float coef; int expn; struct node * next; }PLOY;
01).txt
void insert(PLOY *head,PLOY *inpt) //查找位置插入新链节程序 { PLOY *pre,*now; int signal=0; pre=head; if(pre->next==NULL) {pre->next=inpt;} else {now=pre->next; while(signal==0) { if(inpt->expn<now->expn) { if(now->next==NULL) { now->next=inpt; signal=1; } else { pre=now; now=pre->next; } } else if(inpt->expn>now->expn) { inpt->next=now; pre->next=inpt; signal=1; } else { now->coef=now->coef+inpt->coef; signal=1; free(inpt); if(now->coef==0) { pre->next=now->next; free(now);
printf(" 请输入第二个多项式 g(x):");
g=creat('g'); printf(" 第二个多项式为:g(x)="); print(g); printf(" 结果为:F(x)=f(x)+g(x)="); f=add(f,g); print(f); printf("\n\n"); printf(" 继续请选择相应操作,退出请按 0. "); break; }
{ห้องสมุดไป่ตู้
scanf("%d",&sign);
switch(sign)
{
case 0:
break;
case 1:
{
printf(" 你选择的操作是多项式相加:\n");
printf(" 请输入第一个多项式 f(x):");
f=creat('f');
printf(" 第一个多项式为:f(x)=");
print(f);
}}}}}
PLOY *creat(char ch) //输入多项式 { PLOY *head,*inpt; float x; int y; head=(PLOY *)malloc(sizeof(PLOY)); //创建链表头 head->next=NULL; scanf("%f %d",&x,&y); while(x!=0) { inpt=(PLOY *)malloc(sizeof(PLOY)); //创建新链节 inpt->coef=x; inpt->expn=y; inpt->next=NULL; insert(head,inpt); //查找位置并且插入新链节 scanf("%f %d",&x,&y); } return head; }
printf(" 3.例如输入 \"1 1 2 2 0 0\" 表示 \"1*X^1+2*X^2\"
\n");
printf("
\n");
printf("---------------------------帮助------------------------------\n");
printf("\n\n");
case 3:
{
printf("---------------------------帮助------------------------------\n");
printf("
\n");
printf(" 1.输入时只输入多项式的系数与指数
\n");
printf(" 2.输入多项式形式:系数 1 指数 1 系数 2 指数 2 …… ,以 0 0 结束\n");