2022年数据结构实验代码 2.pdf

上传人:Q****o 文档编号:28418268 上传时间:2022-07-28 格式:PDF 页数:13 大小:61.70KB
返回 下载 相关 举报
2022年数据结构实验代码 2.pdf_第1页
第1页 / 共13页
2022年数据结构实验代码 2.pdf_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《2022年数据结构实验代码 2.pdf》由会员分享,可在线阅读,更多相关《2022年数据结构实验代码 2.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数据结构实验参考代码实验一 :针对链式或顺序存储的线性表实现指定的操作题 1 问题描述:有两个指数递减的一元多项式,写一程序先求这两个多项式的和,再求它们的积。基本要求:用带表头结点的单链表作为多项式的存储表示;要建立两个单链表;多项式相加就是要把一个单链表中的结点插入到另一个单链表中去,要注意插入、删除操作中指针的正确修改。题 2 问题描述:编号为 1,2,n 的 n 个人围坐在一圆桌旁,每人持有一个正整数的密码。从第一个人开始报数,报到一个预先约定的正整数m时,停止报数,报m的人退席,下一个人又重新从1 开始报数,依此重复,直至所有的人都退席。编一程序输出他们退席的编号序列。例如,设m=2

2、0 ,n=7,7 个人的密码依次是 3,1,7,2,4,8,4,则退席的人的编号依次为6,1,4,7,2,3,5。基本要求:用不带表头结点的循环单链表表示围成圆圈的n 个人;要求建立此循环单链表;某人离席相当于删除一个结点,要正确设置程序中循环终止的条件和删除结点时指针的修改变化。/ 实验 1.1 代码#include using namespace std; struct poNode float coef; int expn; poNode *next; ; class Polynomail 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -

3、- - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - public: Polynomail(int m=0); Polynomail(); int Print(); int PolynLength(); Polynomail &AddPolyn(Polynomail &P2,Polynomail &P3); Polynomail &MultiplyPolyn(Polynomail &P2,Polynomail &P4); private: int InsertpoNode(); poNode *first; ; int main

4、() int m; cout 输入多项式 P1项数m; Polynomail P1(m); if(P1.PolynLength()!=m) couterror!endl; return -1; cout 输入多项式 P2项数m; Polynomail P2(m); if(P2.PolynLength()!=m) couterror!endl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - return -1; cout 多项

5、式 P1:; P1.Print(); cout 多项式 P2:; P2.Print(); Polynomail P3; P3=P1.AddPolyn(P2,P3); coutP1+P2:; P3.Print(); Polynomail P4; P4=P1.MultiplyPolyn(P2,P4); coutP1*P2:; P4.Print(); return 0; int Polynomail:InsertpoNode() if(first=NULL) first=new poNode; cout 输入系数和指数: first-coef; cinfirst-expn; first-next=N

6、ULL; else poNode *p=new poNode; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - poNode *q=first; cout 输入系数和指数: p-coef; cinp-expn; poNode *r; while(q-next!=NULL&q-expnexpn) r=q; q=q-next; if(q=first&q-next!=NULL) if(q-expn=p-expn) return -1

7、; p-next=q; first=p; else if(q=first&q-next=NULL) if(p-expnexpn) p-next=q; first=p; else if(p-expnq-expn) q-next=p; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - p-next=NULL; else return -1; else if(q-next=NULL&q!=first&p-expnq-expn) q-n

8、ext=p; p-next=NULL; else if(q-expn=p-expn) return -1; r-next=p; p-next=q; return 0; Polynomail:Polynomail(int m) first=NULL; int i; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - for(i=0;im;i+) int r=InsertpoNode(); if(r=-1) break; int Po

9、lynomail:Print() poNode *p=first; coutf(x)=; if(first=NULL) coutNULLendl; while(p!=NULL) coutcoef*xexpn; if(p-next=NULL) coutendl; else coutnext; return 0; Polynomail:Polynomail() poNode *p=first; while(p!=NULL) p=p-next; delete first; first=p; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -

10、- 名师精心整理 - - - - - - - 第 6 页,共 13 页 - - - - - - - - - int Polynomail:PolynLength() int i=0; poNode *p=first; while(p!=NULL) p=p-next; i+; return i; Polynomail &Polynomail:AddPolyn(Polynomail &P2,Polynomail &P3) poNode *p=first; poNode *q=P2.first; P3.first=new poNode; poNode *r=P3.first; while(p!=NU

11、LL&q!=NULL) if(p-expn=q-expn) r-coef=p-coef+q-coef; r-expn=p-expn; p=p-next; q=q-next; else if(p-expnexpn) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - - - - - - r-coef=p-coef; r-expn=p-expn; p=p-next; else r-coef=q-coef; r-expn=q-expn; q=q-next;

12、 if(p!=NULL|q!=NULL) r-next=new poNode; r=r-next; else r-next=NULL; while(p!=NULL|q!=NULL) if(p!=NULL) r-coef=p-coef; r-expn=p-expn; p=p-next; else r-coef=q-coef; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 13 页 - - - - - - - - - r-expn=q-expn; q=q-next; if(

13、p!=NULL|q!=NULL) r-next=new poNode; r=r-next; else r-next=NULL; return P3; Polynomail &Polynomail:MultiplyPolyn(Polynomail &P2,Polynomail &P4) poNode *p=first; while(p!=NULL) Polynomail P3; poNode *q=P2.first; P3.first=new poNode; poNode *r=P3.first; r-coef=p-coef*q-coef; r-expn=p-expn+q-expn; q=q-n

14、ext; while(q!=NULL) r-next=new poNode; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 13 页 - - - - - - - - - r=r-next; r-coef=p-coef*q-coef; r-expn=p-expn+q-expn; q=q-next; r-next=NULL; P4=P4.AddPolyn(P3,P4); p=p-next; return P4; / 实验 1.2 代码#include using names

15、pace std; struct numNode int key; int num; numNode *next; ; int CreatCircleList(numNode *now,int length); int Loop(numNode *now,int m); int main() int m; int n; numNode *now=new numNode; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 13 页 - - - - - - - - - cou

16、t 请输入人数: n; cout 请输入初始数 m:m; CreatCircleList(now,n); Loop(now,m); return 0; int CreatCircleList(numNode *now,int length) if(length=0) couterror!num=1; cout 请输入编号为 1 的人拥有的密码。 now-key; numNode *p=now; int i; for(i=1;inext=new numNode; p=p-next; p-num=i+1; cout 请输入编号为 i+1 的人拥有的密码。 p-key; p-next=now; 名师

17、资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 13 页 - - - - - - - - - return 0; int Loop(numNode *now,int m) cout 退席的人编号依次为 :next!=now) s1=s1-next; while(s1-num!=s2-num) for(int i=0;inext; s2=s2-next; coutnumnext=s2; m=s1-key; delete s1; s1=temp; coutnumendl; return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 13 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 13 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁