多项式相加
来源:互联网 发布:淘宝上的色情杂志 编辑:程序博客网 时间:2024/03/29 23:08
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct polyn
{
int coef;
int expn;
struct polyn *next;
}POL;
/*建立有序多项式*/
POL *creatpolyn()
{
POL *head,*cfront,*cnew,*clast;
head=(POL *)malloc(sizeof(POL));
head->next=NULL;
cnew=(POL *)malloc(sizeof(POL));
scanf("%d%d",&cnew->coef,&cnew->expn);
while(cnew->coef)
{
clast=head->next;
if(!head->next) {head->next=cnew;cnew->next=NULL;}
else
{
while(clast->next&&(cnew->expn<clast->expn))
{
cfront=clast;
clast=clast->next;
}
if(cnew->expn>clast->expn)
{
if(head->next==clast) head->next=cnew;
else cfront->next=cnew;
cnew->next=clast;
}
else
{
clast->next=cnew;
cnew->next=NULL;
}
}
cnew=(POL *)malloc(sizeof(POL));
scanf("%d%d",&cnew->coef,&cnew->expn);
}
free(cnew);
return head;
}
/*输出多项式*/
void printpolyn(POL *head)
{
POL *ph;
ph=head->next;
while(ph)
{
printf("%dX^%d+",ph->coef,ph->expn);
ph=ph->next;
}
printf("/n");
}
/*多项式相加*/
POL *addpolyn(POL *h1,POL *h2)
{
POL *h3,*tp1,*tp2,*tp3;
h3=(POL *)malloc(sizeof(POL));
h3->next=NULL;
tp1=h1->next;
tp2=h2->next;
tp3=h3;
while(tp1&&tp2)
{
if(tp1->expn>tp2->expn)
{
tp3->next=tp1;
tp1=tp1->next;
tp3=tp3->next;
}
else
if(tp1->expn<tp2->expn)
{
tp3->next=tp2;
tp2=tp2->next;
tp3=tp3->next;
}
else
{
if(tp1->coef+tp2->coef)
{
tp1->coef=tp1->coef+tp2->coef;
tp3->next=tp1;
tp1=tp1->next;
tp2=tp2->next;
tp3=tp3->next;
}
else
{
tp1=tp1->next;
tp2=tp2->next;
}
}
}
if(!tp1) tp3->next=tp2;
if(!tp2) tp3->next=tp1;
return h3;
}
void apolyn()
{
POL *mp1,*mp2,*mp3;
printf("请输入第一个多项式系数与指数:/n");
mp1=creatpolyn();
printf("您以上输入的多项式是:/n");
printpolyn(mp1);
printf("请输入第二个多项式系数与指数:/n");
mp2=creatpolyn();
printf("您以上输入的多项式是:/n");
printpolyn(mp2);
mp3=addpolyn(mp1,mp2);
printf("多项式的和是:/n");
printpolyn(mp3);
}
/*菜单*/
void mmenu()
{
printf("***——————主菜单——————***/n");
printf("1.多项式相加/n");
printf("0.退出该程序/n");
printf("***———————————————***/n");
printf("/n");
printf("***——————请注意——————***/n");
printf("1.本程序只能输入数字,按数字/"0/"来结束输入!/n");
printf("2.严格按照所要求的格式操作!/n");
printf("***———————————————***/n");
}
/*选择*/
void mchoice()
{
int ch;
printf("请键入主菜单中相应数字,选择相应操作:");
scanf("%d",&ch);
switch(ch)
{
case 1:apolyn();break;
case 0:exit(0);
default:printf("请键入相应数字进行选择!/n");
}
}
void main()
{
while(1)
{
system("cls");
mmenu();
mchoice();
system("pause");
}
}
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 两个多项式相加!
- 用想要的域名运行你的本地Web应用
- 编程思想+++++精华
- Google Wave,新Web时代的沟通平台(多图,视频)ZZ
- 性能监控之监控SQL语句(ZT)
- 栈的实现
- 多项式相加
- 快速构建MMO服务器框架(二)网络:选用boost库
- 看看名人二十四岁在干什么
- 用C#开发软件自动更新程序
- 队列的实现
- stay hungry,stay foolish
- 稀疏矩阵的实现
- 二叉树的实现
- Hibernate查询语句(未完待续……)