已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构实验报告实验一:一元多项式相加姓 名: 周 成 学 号: 13083511 专 业: 软件工程 任 课 教 师: 马慧珠 2013年12 月01 日1.实验名称:一元多项式相加2.实验目的: 如何使用C语言实现链表的说明、创建以及结点的插入和删除等操作。3.实验要求:对一元多项式能实现输入、输出,以及两个一元多项式相加及结果显示。4.实验内容:一元多项式的表示在计算机内用链表来实现,同时为了节省存储空间,只存储其中非零的项,链表中的每个节点存放多项式的系数非零项。它包含三个域,分别存放多项式的系数,指数,以及指向下一个项的指针。根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”中的一项,对于两个一元多项式中所有指数不相同的项,则分别复抄到“和多项式”中去。核心算法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-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 *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, ¤t-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; 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) /*如?果?不?是?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-next = 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; p1-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, *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); 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年敬老院年度工作总结8篇
- 2025年we前端面试题及答案
- 2025年下半年嘉兴平湖市交通系统下属事业单位招考高层次紧缺人才易考易错模拟试题(共500题)试卷后附参考答案
- 2025企业设备抵押担保借款合同及注意事项(合同协议范本)
- 2025标准关于解除劳动合同协议书样本参考
- 2025年下半年吉林通化市市直事业单位公开选调2号(94人)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林抚松县住房和城乡建设局招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林市事业单位公开招聘工作人员(含专项)(3号)(756人)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉安市吉安县永和镇吉州窑景区招考讲解员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年厦门市闽台渔轮避风港管理处招考易考易错模拟试题(共500题)试卷后附参考答案
- 《建筑结构检测与加固》 试题试卷及答案
- 2022河湖无人机巡查作业技术导则
- 《突发事件概述》课件
- 初中物理实验教学专题讲座
- 对外汉语教学的测试和评估教学课件
- 大脑的奥秘:神经科学导论学习通超星课后章节答案期末考试题库2023年
- 环境保护税课件
- 课本剧林教头风雪山神庙剧本
- 农业生态与环境保护教案
- NY 623-2002内蒙古白绒山羊
- 甲状腺微创消融治疗手术知情同意书
评论
0/150
提交评论