c语言编程多项式,多项式c语言编程.docx

多项式c语言编程

#include "stdlib.h"#include "stdio.h"typedefstruct node{double coef; //系数int exp; //指数struct node *next;}Polynode,*Polynomial; void error(char *s){fprintf(stderr,"%s\n",s);exit(1);}Polynode* createNode(double coef,int exp){// 为结点分配空间Polynode *p=(Polynode*)malloc(sizeof(Polynode));if(!p)error("分配失败");p->coef=coef;p->exp=exp;p->next=NULL; return p;}void insertNode(Polynomial p,Polynode *newnode){Polynode *q=p;//找到链表的末尾,循环结束时,p指向最后一个结点while(q->next!=NULL)q=q->next;q->next=newnode; }Polynomial createPolynomial(int m){double coef;intexp,i=1;Polynode *newnode;Polynomial p;// 创建头结点newnode=createNode(0,0);// p指向头结点p=newnode;// 依次创建多项式各项对应的结点while(i<=m){printf("系数=");scanf("%lf",&coef);printf("指数=");scanf("%d",&exp);newnode=createNode(coef,exp);insertNode(p,newnode);i=i+1;}return p;}void append(Polynomial p,Polynode *currentnode){Polynode *newnode,*q;// 找到链表p的尾结点qq=p;while(q->next)q=q->next;// 复制currentnode指向的每一个结点,链入p的末尾while(currentnode){newnode=createNode(currentnode->coef,currentnode->exp);q->next=newnode;q=q->next;currentnode=currentnode->next;}}void outputPolynomial(Polynomial p){Polynode *currentnode;currentnode=p->next;if(!currentnode)error("Polynomial is null");// 输出第一项printf("%lfx^%d",currentnode->coef,currentnode->exp);currentnode=currentnode->next;while(currentnode){if(currentnode->coef>0)printf("+");printf("%lfx^%d",currentnode->coef,currentnode->exp);currentnode=currentnode->next;}printf("\n");}void freePolynomial(Polynomial p){Polynode *q; while(p){ q=p;p=p->next;free(q);}}Polynomial addPolynomial(Polynomial pa,Polynomialpb){Polynomial pc;Polynode *currenta,*currentb,*newnode;double coef;currenta=pa->next;currentb=pb->next;newnode=createNode(0,0);// 创建链表pc的头结点pc=newnode;//pc指向头结点while(currenta&&currentb){if(currenta->exp>currentb->exp){newnode=createNode(currentb->coef,currentb->exp);insertNode(pc,newnode);currentb=currentb->next;}else if(currenta->expexp){newnode=createNode(currenta->coef,currenta->exp);insertNode(pc,newno

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值