数据结构数据结构试验——总1.doc

数据结构数据结构试验——总1.doc

ID:35807788

大小:82.50 KB

页数:19页

时间:2019-04-19

数据结构数据结构试验——总1.doc_第1页
数据结构数据结构试验——总1.doc_第2页
数据结构数据结构试验——总1.doc_第3页
数据结构数据结构试验——总1.doc_第4页
数据结构数据结构试验——总1.doc_第5页
资源描述:

《数据结构数据结构试验——总1.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构试验学院:信息学院班级:物联网1302组员:寇志娟、彭雪梅、周燕敏实验一一元多项式运算一、问题描述设计一个一元多项式简单计算器。二、实验要求(1)采用顺序表或链表等数据结构。(2)输入并建立多项式。(3)输出运算结果的多项式三、算法voidCreatPolyn(polynomial&p,intm){//输入m项的系数和指数,建立表示一元多项式的有序链表PInitList(P);h=GetHead(P);e.coef=0.0;e.expn=-1;SetCurElem(h,e);//设置头结点的数据元素for(i=1;1<=m;++i){//依次输入m个非零值scan

2、f(e.coef,e.expn);if(!LocateElem(P,e,q,(*cmp)())){//当前链表中不存在该指数项if(MakeNode(s,e))InsFirst(q,s);//生成节点并插入链表}}}//CreatPolynvoidAddPolyn(Polynomial&Pa,polynomial&Pb){//多项式加法:Pa=Pa+Pb,利用两个多项式的节点构成“和多项式”。ha=GetHead(Pa);hb=GetHead(Pb);//ha和hb分别指向Pa和Pb中头结点qa=Next(Pa,ha);qb=Next(Pb,hb);//qa和qb分别指向

3、Pa和Pb中当前节点while(qa&&qb){//qa和qb均非空a=GetCurElem(qa);b=GetCurElem(qa);//a和b为两表中当前比较元素switch(*cmp(a,b)){case-1://多项式PA中当前节点的指数值小ha=qa;qa=NextPos(Pa,qa);break;case0://两者指数值相等sum=a.coef+b.coef;if(sum!=0.0){//修改多项式PA中当前节点的系数值SetCurElem(qa,sum);ha=qa;}else{//删除多项式PA中当前节点DelFirst(ha,qa);FreeNode(

4、qb);qb=NextPos(Pb,hb);qa=NextPos(Pa,qa);break;case1://多项式PB中当前节点的指数值小DelFirst(hb,qb);InsFirst(ha,qb);qb=NextPos(Pb,hb);ha=NextPos(Pa,ha);break;}//switch}//whileif(!ListEmpty(Pb))Append(Pa,qb);//链接Pb中剩余点FreeNode(hb)://释放Pb的头结点}//AddPolyn四、源程序#include#includetypedefstruct

5、Polynomial{floatcoef;intexpn;structPolynomial*next;}*Polyn,Polynomial;//Polyn为结点指针类型voidInsert(Polynp,Polynh){if(p->coef==0)free(p);//系数为0的话释放结点else{Polynq1,q2;q1=h;q2=h->next;while(q2&&p->expnexpn){//查找插入位置q1=q2;q2=q2->next;}if(q2&&p->expn==q2->expn){//将指数相同相合并q2->coef+=p->coef;free

6、(p);if(!q2->coef){//系数为0的话释放结点q1->next=q2->next;free(q2);}}else{//指数为新时将结点插入p->next=q2;q1->next=p;}}}//InsertPolynCreatePolyn(Polynhead,intm){//建立一个头指针为head、项数为m的一元多项式inti;Polynp;p=head=(Polyn)malloc(sizeof(structPolynomial));head->next=NULL;for(i=0;i

7、olynomial));//建立新结点以接收数据printf("请输入第%d项的系数与指数:",i+1);scanf("%f%d",&p->coef,&p->expn);Insert(p,head);//调用Insert函数插入结点}returnhead;}//CreatePolynvoidDestroyPolyn(Polynp){//销毁多项式pPolynq1,q2;q1=p->next;q2=q1->next;while(q1->next){free(q1);q1=q2;//指针后移q2=q2->next;}}voidPr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。