一元多项式计算
程序所能达到的功能:
1.实现一元多项式的输入;
2.实现一元多项式的输出;
3.计算两个一元多项式的和并输出结果;
4.计算两个一元多项式的差并输出结果;
效果图
#include<stdio.h>
#include<malloc.h> //头文件
typedef struct Polynomial{
//定义一个指针类型Polynomial
float coef; //系数
int expn; //指数
struct Polynomial *next;
} *Polyn, Polynomial; //Polyn 为结点指针类型
void Insert(Polyn p, Polyn h) {
if(p->coef==0) free(p) ; //系数为 0 的话释放结点
else{
Polyn q1, q2;
q1=h; q2=h->next; //h是头指针,q1指向头指针,q2指向头指针的下一位
while(q2&&p->expn<q2->expn) {
//查找插入位置
q1=q2;
q2=q2->next;
}
if(q2&&p->expn==q2->expn) {
//将指数相同的项合并
q2->coef+=p->coef;
free(p) ; //释放结点
if(!q2->coef) {
//系数为 0 的话释放结点
q1->next=q2->next;
free(q2) ; //释放指针q2
}
}
else{
//指数为新时将结点插入
p->next=q2;
q1->next=p;
}
}
} //Insert
Polyn CreatePolyn(Polyn head, int m) {
//建立一个头指针为 head、 项数为 m 的一元多项式
int i;
Polyn p; //p是指针
p=head=(Polyn) malloc(sizeof(struct Polynomial) ) ;
head->next=NULL;
for(i=0; i<m; i++) {
p=(Polyn) malloc(sizeof(struct Polynomial) ) ; //建立新结点以接收数据
printf("请输入第%d 项的系数与指数: ", i+1) ;
scanf