多项式的简单运算数据结构课程设计Word文档下载推荐.docx
- 文档编号:19512019
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:13
- 大小:95.76KB
多项式的简单运算数据结构课程设计Word文档下载推荐.docx
《多项式的简单运算数据结构课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《多项式的简单运算数据结构课程设计Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
这很重要,考虑到系数为0,该节点
就没有意义,故而链表结束创建的标志是00,这样的节点会在插入的过程中自动删除。
定义节点
typedefstructnode//定义节点类型
{
floatcoef;
intexpn;
structnode*next;
}PLOY;
创建链表
voidinsert(PLOY*head,PLOY*inpt);
PLOY*creat(charch);
//charch中的ch则是多项式的字符标志,如f,g等,传入字符后,接下来就为其函数内的暂存单元赋数值,接着将创建的节点,调用insert函数,将节点插入链
表,继而返回链表的头指针
输出链表
voidprint(PLOY*fun)//此函数是根据实际的输出格式,对链表的信息进行加工后输出,由于考虑到如果系数为正,直接输出就会缺少‘+'
号,而如果该系数为正且系链表的第一项就省
略,另外就是,如果系数的绝对值为1,就可以省略系数1,直接输出符号链表的加操作
PLOY*addPLOY(PLOY*head,PLOY*pre)//多项式相加,此原理就是将其中的一条链表的各个项,都用一个结构体单元拷贝后,调用insert函数直接插入另外一条链表,从而返回该链表
链表的减操作
PLOY*minusPLOY(PLOY*head,PLOY*pre)//多项式相减,原理与加法相似,但是由于设计到‘—'
号,在拷贝每个结构体单元后必须,在系数上加‘—'
链表的乘操作
PLOY*byPLOY(PLOY*head1,PLOY*head2)//多项式相乘,先从其中一个链表的第一项开始,依次去乘以另一个链表的每一项,并开辟新链表,插入每一项,直到全部乘完
#include<
iostream>
usingnamespacestd;
typedefstructnode//定义节点类型{
voidstart()//用户选择界面
{cout<
<
"
\t\t====================================="
endl;
cout<
\t\t两个一元多项式的相加/相减,相乘:
cout<
\t\t请选择操作:
\t\t0.退出"
\t\t1.两个一元多项式相加"
\t\t2.两个一元多项式相乘"
\t\t3.两个一元多项式相减"
}
voidinsert(PLOY*head,PLOY*inpt)//参数1:
链表的头节点,参数2:
待插入的节点
PLOY*pre,*now;
intsignal=0;
pre=head;
//pre指向头节点
if(pre->
next==NULL){pre->
next=inpt;
}//如果只有头结点,就将待插入的节点,接上
else{
now=pre->
next;
//否则将now指针指向第一个节点
while(signal==0)
指数小,往后插
下一个节点没有
if(inpt->
expn<
now->
expn)//
if(now->
next==NULL)//
signal=1;
else
{pre=now;
如果发现比现在的链节大了就插入到这个连接的前
elseif(inpt->
expn>
expn)//面
inpt->
next=now;
pre->
signal=1;
coef=now->
coef+inpt->
coef;
//系数相加signal=1;
deleteinpt;
//释放插入节点if(now->
coef==0)//系数等于0{
pre->
next=now->
//删除该节点
deletenow;
PLOY*creat(charch)//创建链表
PLOY*head,*inpt;
floatx;
inty;
//系数及指数的暂存单元
head=newPLOY;
//创建链表头head->
next=NULL;
//初始化链表
)"
请输入一元多项式"
ch<
:
(格式是:
系数指数;
以00结束!
cin>
>
x>
y;
//给暂存单元赋值
while(x!
=0)
inpt=newPLOY;
inpt->
coef=x;
expn=y;
//以暂存单元的数值来创建一个节点
insert(head,inpt);
//将该节点插入链表中
的下一项:
(以00结束!
)"
//给下一个节点的暂存单元赋值
returnhead;
PLOY*addPLOY(PLOY*head,PLOY*pre)//{
PLOY*inpt;
intflag=0;
while(flag==0)
next==NULL)
flag=1;
//当指向空时跳出循环else
pre=pre->
//创建新链节inpt->
coef=pre->
expn=pre->
expn;
insert(head,inpt);
}//把当前"
g(x)"
的节点插入到"
y(x)"
中}
PLOY*minusPLOY(PLOY*head,PLOY*pre)//{
//当指向空时跳出循环
多项式相加
多项式相减
coef=-pre->
}//否则把当前"
//多项式相乘
PLOY*byPLOY(PLOY*head1,PLOY*head2){
PLOY*inpt,*res,*pre;
res=newPLOY;
res->
//初始化存放结果的链表
head1=head1->
pre=head2;
//当现在指向空时跳出循环head1=head1->
continue;
if(head1==NULL)
//当现在指向空时跳出循环continue;
coef*head1->
expn+head1->
insert(res,inpt);
//把当前"
的链节插入到"
中}returnres;
}voidprint(PLOY*fun)//输出多项式
PLOY*printing;
//打印指针
//打印完成的标志
printing=fun->
//给打印指针初始化,从第1个节点开始
if(fun->
0"
return;
//如果该链表为空,则输出0while(flag==0)
if(printing->
coef>
0&
&
fun->
next!
=printing)//如果打印项不是第1项,且系数大于0
printf("
+"
);
//先打印"
号,因为正数不带"
号
coef!
=1&
printing->
=-1)//系数非1或-1的普通情况
%f"
printing->
coef);
expn==1)
X"
expn!
printf("
XA%d"
printing->
expn);
else//系数为1或者-1的情况
coef==1)
if(!
expn)printf("
1"
elseif(printing->
expn==1)printf("
printing->
coef==-1)
-1"
elseif(printing->
-X"
elseprintf("
-XA%d"
expn);
next==NULL)flag=1;
printing=printing->
}voidmain()
PLOY*f,*g;
intsign=-1;
//设置标志
start();
\n输入你想要的操作代码:
while(sign!
cin>
sign;
switch(sign)
case0:
break;
//退出
case1:
\n你选择的操作是多项式相加f=creat('
f'
//输入多项式f(x)cout<
f(x)="
;
print(f);
g=creat('
g'
//输入多项式g(x)
g(x)="
print(g);
F(x)=f(x)+g(x)="
f=addPLOY(f,g);
//两个多项式相加print(f);
sign=-1;
//复位标志
//回复用户选择界面break;
case2:
你选择的操作是多项式相乘f=creat('
//输入多项式g(x)cout<
F(x)=f(x)*g(x)="
f=byPLOY(f,g);
//两个多项式相乘print(f);
case3:
你选择的操作是多项式相减f=creat('
cout«
F(x)=f(x)-g(x)二"
;
f=minusPLOY(f,g);
〃两个多项式相减
print(f);
sign=-1;
〃复位标志
〃回复用户选择界面
default:
输入有误!
请重新选择操作!
〃选择错误,返回选择界面
拠-1-——兀京卫肉式的相力14K柏谟.柏乘土
~H:
\Liehuq空宫林羊bh:
—亓*EhJexe"
扌年探■!
*=K_退出■*-i-w-r—.h-TO-T9-WT-.
P俞入唯尔扭.歪白勺择作-代弔马=N
#夢煲岂鬆蠡錚瑁翌蹩.孰数寸旨冰=1^,»
«
结束!
仙镣入一兀秦顶心的T—项乂以“«
结馬!
>
忌矗入一亍亡割顼心白勺下一顼=2-U«
结康!
P
|T<
-c>
—1-ldtJie,tit,0Hr-总.tJtJidiJtitjK亠-1
萨镜入一尢自工页:
^乂榕式畀・疾吉攵扌以❷a结耒!
a皆缶入一尹;
宰珈竝的卜一换=€咲8a结車!
kf*T4fi?
..A_—“”,宰丄页:
代口的卜一一两="
乂片0紿审!
na
Lcm^—4_<
-5t_ciRPinnfixA4
fee»
二:
f<
*H<
^c>
—k_nnnem^KA4
两亍开哥工页#的相如”相嫌才口年
瞿婀髀眇
吉籀人一兀毎项式£
a35,
呼输入一元參顼戎£
的下一项乂叹00纪東!
请辐入一元參工页式£
的下一顼y以0结束!
M0
tcse^^Gifi-RRfl»
HRXAA*23-ARRF)RR>
E^"
5
诒输入一k多项式rr=u檢式足.毎数扌抒敕;
1?
Ab0结束!
〉
bbh
晴输人一元辜H页尹暫旳下一丄页Y以厲«
負^束!
揺诲入一元务项式n的下一顶江以90结束!
A
冃0
fr<
sc>
-5.n»
dnf}dM^&
E.HRR»
RnX-6
lr<
M>
-f-2B(9.0«
UtdHUK-^71*115.UU«
U00KVC3n^A36.B00UU0K^12112BU-
一两不二完芸議菽鬲祐乔;
藕蠢厂需55厂
请选擇探■(仁❺唾萸__■、:
L_两丁一匹垒;
一—..—审个一匹秦藝总:
芫垂豔癮
3”两个一兀峯顼式
两彳-一亓狷」页式的相力U”相减,相汞=
一一目目
J-1-1_连以„HHH_-"
一吩凳壬操一军更人—“i-J-LJ-H磴曲两两一^0iW3_
四、总结
程序=算法+数据结构;
通过本次的C++数据结构的实习,使我对于这句话的理解更加深刻,
数据结构就像是建立一个数学模型,将现实世界的各种事物及现实问题抽象出来,并加以表示,使计算机能够按照人类的意愿,进行运算。
而只有模型建立得合适,才能够简化计算。
从而设计出高效,稳定的好程序。
以上便是我对此次实习的最大理解。
五、参考文献:
[1]王红梅,胡明,王涛编著.数据结构(C++版).北京.清华大学出版社,2007
[2]王晓东编著.数据结构.北京.科学出版社,2002
[3]郑莉等编著.C++程序设计教程.北京机械工业出版社,2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多项式 简单 运算 数据结构 课程设计