- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构与算法实验任务书2013-S2.
实验2 线性表 实验室: DJ2-106 实验日期: 节次/周次:第1节/第4周周3 班 级:11计科2班 学号姓名:朱昱佩 一、开发环境及工具:
软件环境:Windows 7旗舰版 C++6.0
硬件环境:600G
二、你的选题:
(填写自己所选的题目的要求,可以从实验书和习题集中选择,至少完成一个单链表的选题。建议在顺序表、单链表、双向链表中各选一个任务)。推荐选题:
题1:约瑟夫环。当编号 为1,2,……n 的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数),先任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始依次报数,报到m时停止,第m 个人出列(即删除),将其密码作为新的m值,从刚才出列的人的顺时针方向的下一个开始重新从1报数,重复刚才的操作直到全部的都出列,试设计一个程序求出列顺序。
提示:可以将存储结构设置为单向循环链表,每个结点都有自身的序号和所持的密码二个数据项。人数n和初始密码可由用户键盘输入。链表中代表每个人的结点中的密码可由随机函数生成,也可以由键盘输入。
如,n=7,m=20,链表如下:
则出列顺序为:6,1,4,7,2,3,5
题 2 :一元稀疏多项式计算器。可以用单链表作为存储结构,建立一元多项式,结点按各项指数的降序排列,能够输出多项式,输出时,先输出总项数,再输出各项系数、指数,可以生成a和b下个多项式,并进行相加、相减,输出计算后的结果。 提示:参考课本2.4节或习题集实习1线性表及应用Page81(1.5一元稀疏多项式计算器)
题 3 :带头结点的单链表L,其中有n 个元素非递减有序排列,将元素X插入到链表中合适的位置。
提示:先创建链表,其中的元素值可由随机函数按阶段生成或键盘输入,先打印初始链表数据,然后插入新结点,再打印结果链表。
插入前:
插入后:
题4:完成习题集中的算法并编程实现:Page17的2.19
题5:完成习题集中的算法并编程实现:Page18的2.22
题6:完成习题集中的算法并编程实现:Page18的2.29
题6:完成习题集中的算法并编程实现:Page19的2.33
题7:习题集实习1线性表及应用Page80的1.4长整数四则运算。设计一个实现任意长整数进行加法运算的演示程序。(存储结构为双向循环链表)(扩展的可选功能:实现四则运算等其它运算)
三、实验目的:(请自己填写,不少于50字)
通过实验掌握……、熟练……、了解……
掌握顺序表与链表的区别,熟练了链式存储结构的数据类型的定义方法, 四、存储结构说明和定义:
五、主要算法:
给出程序的概要设计或流程图,给出核心函数的算法,给出每个子函数的函数头。#includeiostream#includecstdio#includecstringusing namespace std;#define MAXN struct LinkList{ int num; LinkList * next; } * head;void insert(LinkList * p1){ LinkList *p2=head;while( p2-next !=NULL ){ if(p2-next-num = p1-num) break; p2=p2-next; } p1-next=p2-next; p2-next=p1;}void output(){ LinkList *p; p=head-next; while(p!=NULL){ printf(%d\t,p-num); p=p-next; } printf(\n);}int main(){ head = new LinkList; // head.init(); head-next=NULL; head-num=MAXN; int n; while(1){ scanf(%d,n); LinkList * now; now=new LinkList; now-num=n; now-next=NULL; insert(now); output(); } return 0; }
六、程序运行结果测试:
文档评论(0)