资源描述:
《实验报告(实验二:一元稀疏多项式计算器)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、云南大学软件学院实验报告指导教师:朱艳萍2009秋季学期学号:20081120064姓名:李雪寒【实验题目】实验2.—元稀疏多项式简单计算器【问题描述】设计并实现一个一元稀疏多项式的简单计算器。【基本要求】一元稀疏多项式简单计算器的基本功能是:1.输入并建立多项式;2.输岀多项式,序列按指数降序排列;3.多项式日和&相加,并建立多项式a+b;□4.多项式a和6相减,并建立多项式【实现提示】1.用带头节点的单链表作为多项式的存储结构;一、【概要设计】链式存储结构,由于不要求逻辑上相邻的元素在物理上也相邻,因此,能够迅速进行插入或删除操作,而且不像顺序存储结构那样需要移动大
2、量元素,但也没有顺序表那样随机存取的优点。主程序中通过调用voidcreate(polynmial&L)创建存储在单链表中的多项式,调用voiddisplay(polynmialL);输出显示多项式,调用voidsort(polynmial&L)和voidreverse(polynmial&L)对多项式进行排序,使其按降序排列,调用voidadd(polynmialLa,polynmialLb,polynmial&Lc)和voidsubtract(polynmialLa,polynmialLb,polynmial&Ld)对两个多项式进行加减操作。二、【详细设计】在此次试
3、验中,主要通过以下7个子函数对存储在单链表中的多项式进行操作:voidcreate(polynmial&L)//输入并建立多项式L{inti,n;staticstructnode*p;printf("输入多项点项数:'*);scanf(”%d“,&n?;〃输入多项式的项数L=(structnode*)malloc(sizeof(structnode));L->next=NULL;for(i=0;ivn;i++){p=(structnode*)malloc(sizeof(structnode));printfC*输入一个项的系数和指数,用空格隔开:H);scanf
4、("%f%d",&p・>c,&p->e);p->next=L・>next;L->next=p;}〃利用for循环输入多项式中每一项的系数和指数}voiddisplay(polynmialL)〃显示,输出多项式Lstructnode*p,*q;〃建立两个结点intflag=0;intk=0;q=L->next;while(q){if(q->c!=0)k++;〃计算多项式的项数q=q->next;printfC1哄%(1项”,k);〃输出多项式的项数p=L->next;if(p->c!=0){printf(”+%.lfxA%d”,p->c,p->e);flag卄;}//
5、判断该项是否为零,不为零则输出for(p=p->next;p;p=p->next){if(p->c!=0){printf("+%.lfxA%d",p->c,p->e);flag卄;}〃输岀多项式if(flag==0)printf("%dH,flag);elSCprintf(Hn);}voidsort(polynmial&L)〃多项式L按指数排序{polynmialp,q,r,s;p=L->next;L->next=NULL;while(p!=NULL){r=L;q—T>next,while((q!=NULL)&&(q->e<=p->e)){r=q;q=q->ne
6、xt;}s=p->next;r->next=p;p->next=q;P=s;}}voidreverse(polynmial&L)〃逆置{polynmialH;staticstructnode*p,*q,*s;H=(structnode*)malloc(sizeof(structnode));H->next=NULL;p=(structnode*)malloc(sizeof(structnode));s=L->next;p->c=s->c;p->e=s->e;p->next=s->next;while(s){p->c=s->c;p->e=s->e;p->next=s->n
7、ext;q=H->next;H->next=p;p->next=q;p=(structnode*)malloc(sizeof(structnode));s=s->next;}p=H->next;q=L->next;while(p)q->c=p->c;q->e=p->e;q=q->next;p=p->next;}}voidselect()//用户选择加减操作{「printf(M请选择加减操作”);printf(n1•两个一元多项式相加rT);printf(n2.两个一元多项式相减rT);}voidadd(polynmialLa,po