- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一元多项式的表示与相加运算
西 安
二. 实验内容
1、实现一元多项式的相加运算
三.方案设计
为实现多项式的相加运算
1)用两个单链表分别表示两个一元多项式。
2)多项式向相加的运算规则
指数相同项的对应系数相加,若和不为0,则构成“和多项式”中的一项。
指数不相同的项仍按升幂顺序复抄到“和多项式”中。
以单链表polya和polyb分别表示两个一元多项式A和B,A+B的求和运算,就等同于单链表的插入问题,因此“和多项式”中的结点无需另生成。
为实现处理,设p、q分别指向单链表polya和poly b的当前项,比较p、q结点的指数项,由此得到以下运算规则:
若p-expq-exp,则结点p所指的结点应是“和多项式”中的一项,令指针p后移。
若p-exp=q-exp,则将两个结点中的系数相加,当和不为0是修改结点p的系数域,释放q结点;若和尾0,则和多项式中无此项,从A中删去p结点,同时释放p和q结点。
若p-expq-exp,则结点q所指的结点应是“和多项式”中的一项,将结点q插入在结点p之前,且令指针q在原来的链表上后移。
四.测试数据及运行结果
截图如下:
五.总结
实验过程中遇到的问题及解决办法:
问题:写完程序后,出现错误。
解决方法:查看程序提示,双击左键,寻找错误点。找到错误,并进行修改。
不能熟练运用链栈及指针
解决办法:查阅书籍,提高自己对链表及指针的认识,掌握使用链表及指针的技巧
对设计及调试过程的心得体会:
编写的程序要按照正当的程序要求,不能遵循人的思维。
编写程序时注意对链栈及指针的使用,注意各个出错的点及逻辑性错误。
提高自己对链表与指针的认识。
六.附录:源代码(电子版)
实现代码如下:
(1)建立多项式
Polynomial * Create(void)
{
Polynomial *head, *rear, *s;
int c, e;
head = (Polynomial *)malloc(LEN); //建立多项式头结点
rear = head; //rear始终指向单链表的尾,便于尾插法建表
printf(系数(当系数输入为0时,多项式结束):);
scanf(%d,c);
printf(\n);
printf(指数:);
scanf(%d,e);
printf(\n);
while(c!=0)
{
s = (Polynomial *)malloc(LEN);
s-cofe = c;
s-expn = e;
rear-next = s;
rear = s;
printf(系数(当系数输入为零时,多项式结束):);
scanf(%d,c);
printf(\n);
printf(指数:);
scanf(%d,e);
printf(\n);
}
rear-next = NULL;
return (head);
}
两多项式相加
Polynomial* AddPolyn(Polynomial* pa,Polynomial* pb)
{
Polynomial *qa = pa-next;
Polynomial *qb = pb-next;
Polynomial *headc, *pc, *qc;
pc=(Polynomial *)malloc(sizeof (Polynomial));
pc-next = NULL;
headc = pc;
while(qa != NULLqb != NULL)
{
qc = (Polynomial *)malloc(sizeof(Polynomial));
if(qa-expn qb-expn)
{
qc-cofe = qa-cofe;
qc-expn = qa-expn;
qa = qa-next;
}
else if(qa-expn == qb-expn)
{
qc-cofe = qa-cofe+qb-cofe;
qc-expn = qa-expn;
qa = qa-next;
qb = qb-next;
}
else
{
qc-cofe = qb-cofe;
qc-expn = qb-expn;
qb = qb-next;
}
if(qc-cofe != 0)
{
qc-next = pc-next;
pc-next = qc;
pc = qc;
}
else
free(qc);
}
wh
文档评论(0)