- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验室开放项目
实验报告
题目:一元符号多项式的表示及运算
姓名:
班级:
学号:
内容总结
算法概要设计:
一元多项式的创建
Status CreatPolyn(polynomail P)
一元多项式的加法
void AddPolyn(polynomail Pa,polynomail Pb)
一元多项式的减法
void SubPolyn(polynomail Pa,polynomail Pb)
一元多项式的乘法
void MultPolyn(polynomail Pa,polynomail Pb)
发现的问题:
根据上面的设计纲要展开程序的设计,在程序编写和调试过程中主要遇到以下几点问题:
函数形参与实参的传递情况,经常忘记传值不传址的概念,导致程 序运行错误。在初始化和建立多项式等一些以改变原来多项式的一定要用指针传递。
程序运行控制条件考虑不足,例如在乘法函数的循环控制中,条件选取错误,使得结果不正确。
链表的链接混乱,链表链接有疏漏,指针链接情况考虑不周全,例如在加法case1中,没有移动ta,导致结果错误。
程序编写技巧运用,减法就是加法,编写取反函数,将被减数各项取反,减法可用加法实现。在乘法中,也是利用加法实现。
解决方法:
通常采用的方法为自我思考摸索,主要手段是查资料和上网搜索,然后与同学间相互讨论,请教老师。当自我期望与现实差距过大时,自行规避一段时间,自行调节情绪,有意识的讲问题随身携带,随时随地的思考。
实验展示
输入要求
按照多项式指数递增的顺序,依次输入多项式的参数对,第一个参数为系数,后一个参数为指数,如输入1 2,表示x^2项。以输入系数为零的项为结束。
例:1 2 3 4 5 6 8 9 0 3然后回车,就会建立一元多项式:x^2+3x^4+5x^6+8x^9。
输出要求
输出内容为建立和运算之后的结果。多项式有序的按照指数递增的顺序,输出参数对,以小括号为一个单位,第一个为系数,第二个为指数。如输出:(1,2) (3,4) (5,6)。
主要代码展示:
#include stdio.h
#include stdlib.h
#define OK 1
#define ERROR 0
typedef int Status;
/*结构定义*/
typedef struct ElemType{
int coef; //系数
int expn; //指数
}ElemType;//连个类型名
/*定义链表的结构*/
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
typedef LinkList polynomail;
//————基本操作————//
/*有序表的初始化*/
Status InitList(polynomail *P){
*P=(polynomail)malloc(sizeof(LNode));
if(!(*P))return ERROR;
(*P)-data.coef=0;
(*P)-data.expn=-1;
(*P)-next=NULL;
return OK;
}//InitList
/*有序链表的建立*/
Status CreatPolyn(polynomail P){
polynomail q=P,s;
ElemType e;
printf(\n请输入当前项的系数(系数不为零)及指数:);
scanf(%d%d,e.coef,e.expn);
while(e.coef){
s=(polynomail)malloc(sizeof(LNode));
if(!s) return ERROR;
s-data.coef=e.coef;
s-data.expn=e.expn;
s-next=NULL;
q-next=s;
q=s;
scanf(%d%d,e.coef,e.expn);
}
return OK;
}
/*有序表的遍历*/
void PrintList_L(polynomail P){
polynomail q=P-next;
printf(\n一元多项式为:);
if(!q)printf(\n链表为空);
while(q){
printf((%d,%d) ,q-data.coef,q-data.expn);
q=q-next;
}
printf(\n);
}// PrintList_L
/*
文档评论(0)