如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedefstructNode//单链表结点的定义{floatc;inte;structNode*next;}SLNode;voidListInitiate(SLNode**head)//带头结点单链表的初始化{if((*head=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1);(*head)->next=NULL;}voidChooseInsert(SLNode*head,SLNode*q)//将一个创建好的节点按照升幂的顺序插入到需要创建的链表中{SLNode*p,*pre;pre=head;p=head->next;if(p==NULL){pre->next=q;q->next=NULL;}while(p){if(q->e==p->e){p->c=p->c+q->c;free(q);p=NULL;}elseif(q->e<p->e){q->next=pre->next;pre->next=q;p=NULL;}else{if(p->next==NULL){p->next=q;q->next=NULL;p=NULL;}else{pre=pre->next;p=p->next;}}}}voidADDList(SLNode*headA,SLNode*headB,SLNode*headC)//将A与B所存的多项式进行相加且以升幂的形式存储在C中{SLNode*p,*p1,*p2,*q;p=headC;p1=headA->next;p2=headB->next;while(p1||p2){if(p1==NULL){p->next=p2;p1=NULL;p2=NULL;}elseif(p2==NULL){p->next=p1;p1=NULL;p2=NULL;}else{q=(SLNode*)malloc(sizeof(SLNode));if(p1->e==p2->e){q->c=p1->c+p2->c;q->e=p1->e;p->next=q;q->next=NULL;p=p->next;p1=p1->next;p2=p2->next;}elseif(p1->e<p2->e){q->c=p1->c;q->e=p1->e;p->next=q;q->next=NULL;p=p->next;p1=p1->next;}elseif(p1->e>p2->e){q->c=p2->c;q->e=p2->e;p->next=q;q->next=NULL;p=p->next;p2=p2->next;}}}}voidCreatList(SLNode*head,intn)//创建链表并按升幂存入相应的数据元素值{inti;SLNode*q;for(i=0;i<n;i++){if((q=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1);printf("请输入第%d项的系数和指数,以','隔开:",i+1);scanf("%f,%d",&q->c,&q->e);ChooseInsert(head,q);}}voidPrintList(SLNode*head)//以多项式的形式输出链表中存储的多项式{SLNode*p;p=head->next;printf("(");while(p->next!=NULL){if(p->c!=0){printf("%0.2fx^%d+",p->c,p->e);p=p->next;}elsep=p->next;}if(p->c!=0)printf("%0.2fx^%d)",p->c,p->e);}voidmain(){SLNode*headA,*headB,*headC;