#include<stdio.h>
//一元多项式定义
typedef struct node{
float coef; //系数
int expn; //指数
struct node *next; //后继
}pnode,*polynomial;
//一元多项式的创建
polynomial createpolyn(polynomial p,int m)
{
//输入 m 项的系数和指数,建立表示一元多项式的有序链表 p
int i; //变量 i
polynomial q,pre,s; //结点 q,pre,s
p=(polynomial)malloc(sizeof(pnode)); //生成新结点
p->next=0; //先建立一个带头结点的单链表
p->expn=-1; //头结点指数值设为-1
for(i=0;i<m;i++) //依次输入 m 个非零值
{
s=(polynomial)malloc(sizeof(pnode)); //生成新结点
printf("输入系数和指数:");scanf("%f%d",&s->coef,&s->expn); //输入系数和指数
pre=p; //pre 用于保存 q 的前驱,初值为
头结点
q=p->next; //q 初值为首结点
while(q&&q->expn<=s->expn){ //通过比较找到第一个大于输入
项指数的项 q
pre=q; //
q=q->next; //
} //
s->next=q;pre->next=s; //将输入项 s 插入到 q 和其前驱结
点 pre 之间
}
printf("--创建成功--");
return p;
}
//一元多项式打印
void pri(polynomial p)
{
polynomial q;
int id=1;
q=p->next; //第一项(首结点)
printf("加法运算后结果为:");
while(q)
{
printf("第%d 个结点:系数%f,指数%d",id,q->coef,q->expn);
评论0
最新资源