数据结构-实验一-一元多项式相加

上传人:时间****91 文档编号:129391045 上传时间:2022-08-03 格式:DOCX 页数:11 大小:287.04KB
收藏 版权申诉 举报 下载
数据结构-实验一-一元多项式相加_第1页
第1页 / 共11页
数据结构-实验一-一元多项式相加_第2页
第2页 / 共11页
数据结构-实验一-一元多项式相加_第3页
第3页 / 共11页
资源描述:

《数据结构-实验一-一元多项式相加》由会员分享,可在线阅读,更多相关《数据结构-实验一-一元多项式相加(11页珍藏版)》请在装配图网上搜索。

1、数据构造实验报告实验一:一元多项式相加姓 名: 周 成 学 号: 13083511 专 业: 软件工程 任 课 教 师: 马慧珠 12 月01 日1.实验名称:一元多项式相加2.实验目的: 如何使用C语言实现链表的阐明、创立以及结点的插入和删除等操作。3.实验规定:对一元多项式能实现输入、输出,以及两个一元多项式相加及成果显示。4.实验内容:一元多项式的表达在计算机内用链表来实现,同步为了节省存储空间,只存储其中非零的项,链表中的每个节点寄存多项式的系数非零项。它涉及三个域,分别寄存多项式的系数,指数,以及指向下一种项的指针。根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相似的项,

2、相应系数相加,若其和不为零,则构成“和多项式”中的一项,对于两个一元多项式中所有指数不相似的项,则分别复抄到“和多项式”中去。核心算法PolyAdd是把分别由pa和pb所指的两个多项式相加,成果为pa所指的多项式。运算规则如下:相加时,一方面设两个指针变量qa和qb分别从多项式的首项开始扫描,比较qa和qb所指结点指数域的值,也许浮现下列三种状况之一:(1)qa-exp不小于qb-exp,则qa继续向后扫描。(2)qa-exp等于qb-exp,则将其系数相加。若相加成果不为零,将成果放入qa-coef中,并删除qb所指结点,否则同步删除qa和qb所指结点。然后qa、qb继续向后扫描。(3)qa

3、-exp不不小于qb-exp,则将qb所指结点插入qa所指结点之前,然后qa、qb继续向后扫描。扫描过程始终进行到qa或qb有一种为空为止,然后将有剩余结点的链表接在成果表上。所得pa指向的链表即为两个多项式之和。5.实验程序代码及运营成果:#include stdafx.h#include #include #include #include #define NULL 0typedef struct NODE float coef; /系数y int expn; /指?数y struct NODE *next; NODE;NODE *Creat(int n);void print(NODE

4、*head);NODE *AddPolyn(NODE *head1, NODE *head2);NODE *Delfirst(NODE *head, NODE *q);void InsertBefore(NODE *p1, NODE *p2);int compare(int a, int b);/*创建链表*/NODE *Creat(int n) NODE *current, *previous, *head; int i; head = (NODE *)malloc(sizeof(NODE); /*创建头结点?*/ previous = head; for(i = 0; i coef, &c

5、urrent-expn); previous-next = current; previous = current; previous-next = NULL; return head;/*一?元a多项?式?的?想?加,?总体?考?虑?,?可分?qa的?指?数y比qb小?,?或等于pb(如?果?系数y相加等于0和不?等于0),或大于pb里?面?由InsertBefore和Delfirst两?个?小?模块组成一?部?分?*/NODE *AddPolyn(NODE *head1, NODE *head2) NODE *ha, *hb, *qa, *qb; int a, b; float sum;

6、ha = head1; /*ha和hb指?向头结点?*/ hb = head2; qa = ha-next; /*qa和qb指?向头结点?的?下?一?个?结点?*/ qb = hb-next; while(qa & qb) /*qa和qb均非?空?*/ a = qa-expn; b = qb-expn; switch(compare(a, b) case -1 : /*qa-expn expn*/ ha = qa; qa = qa-next; break; case 0 : sum = qa-coef + qb-coef; /*系数y的?和*/ if(sum != 0.0) /*如?果?不?是

7、?0.0*/ qa-coef = sum; /*改?变?系数y*/ ha = qa; else free(Delfirst(ha, qa); free(Delfirst(hb, qb); qa = ha-next; qb = hb-next; /*qb释放?后要a重?新?赋3值*/ break; case 1 : /*如?果?qa- expn qb - expn*/ Delfirst(hb, qb); InsertBefore(ha, qb); /*把?qb插?入?到?ha下?一?个?结点?之?前*/ qb = hb-next; ha = ha-next; break; if(qb) ha-n

8、ext = qb; /*插?入?剩余的?pb*/ free(head2); return head1; /*比较?*/int compare(int a, int b) if(a b) return 1; else return 0;/*删?除y结点?q*/NODE *Delfirst(NODE *p1, NODE *q) p1 - next = q - next; return (q); /*插?入?结点?,引y入?结点?p,可以?让?p插?入?到?p2和p1之?间?*/void InsertBefore(NODE *p1, NODE *p2) NODE *p; p = p1-next; p

9、1-next = p2; p2-next = p;/*打印?,为a了?美观?程序分?开a打印?*/void print(NODE *head) NODE *current; current = head-next; while(current-next != NULL) printf(%0.f * x%d + , current-coef, current-expn); current = current - next; printf(%0.f * x%d, current-coef, current-expn); /system(pause); int main() NODE *head1,

10、 *head2, *head3; int n1, n2; printf(请?输?入?你?需要a的?多项?式?的?项?数y n1 : ); scanf(%d, &n1); head1 = Creat(n1); printf(第一?个?多项?式?的?显?示? : n); print(head1); printf(n请?输?入?你?需要a的?多项?式?的?项?数y n2 : ); scanf(%d, &n2); head2 = Creat(n2); printf(n第二t个?多项?式?的?显?示? : n); print(head2); head3 = AddPolyn(head1, head2);

11、 printf(n合?并后的?多项?式?的?显?示? : n); print(head3); printf(n);运营成果:实验数据1如图:输入一种四次二项式X3+2X4,一种五次二项式X4+2X5,输出如图:实验数据2如图:输入一种五次四项式X2+X3+X4+X5,尚有一种五次五项式1+X+X3+2X4+2X5输出如图所示实验数据3如图:输入一种七次三项式1+2x5+3X7,尚有一种五次四项式1+2X2+3X4+4X5,输出如图:6.实验总结本来我对编程很没有信心,做这样一种课程设计感觉有点吃力,虽然有人觉得很简朴,但是我还是坚持做下来了,我不断的看书,翻阅资料,询问同窗,上网搜索,总算有模有样地把这个程序编的能运营了。另一方面,这次编程是我更多地理解掌握了线性链表的逻辑机构和物理特性。对学过的知识有了较好的巩固。困难还是诸多的,例如初次运营的时候,好几十个错误,当时真的感到非常崩溃。幸亏我没有放弃,才最后完毕。长舒一口气。最后,通过这次编程,不仅仅考察了我对知识的掌握,更重要的是锻炼了我的思维能力和耐心,在最困难的时候没有放弃,今天才干如此舒心。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!