数据结构实验手册-2014.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验手册-2014

数据结构上机实验手册 西安电子科技大学软件学院 数据结构课程组 2014 年 2 月 实验目录 数据结构上机实验手册 1 实验 0 数组、指针和结构体 3 题目一 数据集合的表示及运算 3 题目二 约瑟夫问题 3 题目三 复数运算 4 实验一 链表的实现及运算 4 题目一 单链表基本运算 4 题目二 单链表上的排序运算 6 题目三 约瑟夫问题 6 题目四 一元多项式相加、减运算器 6 实验二 栈和队列的实现与应用 7 题目一 数制转换 7 题目二 括号匹配问题 8 题目三 停车场管理 9 题目四 迷宫问题 9 实验三 字符串运算 11 题目一 字符串运算 11 题目二 文学研究助手 12 实验四 二叉树的运算与应用 12 题目一 二叉树的遍历运算 12 题目二 哈夫曼编/译码器 13 实验五 查找方法 15 题目一 顺序查找、折半查找 15 题目二 二叉排序树的建立、查找、插入和删除运算 15 题目三 哈希表的设计和应用 15 实验六 常用的排序方法 16 题目一 简单排序算法 16 题目二 快速排序 16 实验七 图的遍历 17 题目一 深度优先遍历 17 题目二 广度优先遍历 19 附录 A 实验报告模板 20 附录 B 实验报告示例 20 2 实验 0 数组、指针和结构体 题目一 数据集合的表示及运算 【问题描述】 构造一个非递减数列,然后在该数列中新加入一个数,并保持该数列非递减有序的特性。【基本要求】 用一维数组存储数列。【实现提示】 1. 为简单起见,设数组元素为整型,用静态数组(即固定大小的数组)存储数列,定义如下: #define ARRAYSIZE 10000 //先定义一个足够大的数组,并存入少量数据测试程序的逻辑是否正确 int data[ARRAYSIZE] = {10,20,30,40,50}; int n = 5; // 数列的长度用 n 表示,程序中应保证 n 不大于 ARRAYSIZE 新加入的数从键盘输入,该数有以下几种可能性,在运行程序时都要进行测试:(1)比数列中最小的数还要小;(2)比数列中最大的数还要大;(3)其他情况 调用随机函数产生数列及要加入的新数,这就不能保证数列的非递减性质了,因此需要在程序中增加一个专门用来排序的函数; 4*. 用动态数组,即用动态内存申请函数申请内存块(作为数组的存储空间),借助指针访问数组元素,数组大小自行设定,例如: #define DSIZE 100 int n = 5; //数列的长度用 n 表示,程序中应保证 n 不大于 DSIZE int *ptr; ptr = (int *)malloc(DSIZE * sizeof(int)); //calloc 也可以用来申请内存块 //与 malloc 不同的是,calloc 函数会将申请到的内存区域初始化为 0 //用法示例:ptr = (int *)calloc(DSIZE, sizeof(int)); if (!ptr) //申请失败,程序中止 exit(0); for(i = 0; in; i++) *(ptr+i) = rand(); //调用随机函数产生数据,*(ptr+i)等同于 ptr[i] 【测试数据】自行设定。 题目二 约瑟夫问题 【问题描述】 约瑟夫问题是由公元 1 世纪时的犹太历史学家(也是军官及辩论家)弗拉维奥·约瑟夫斯提出的,他参加并记录了公园 66-70 年犹太人反抗罗马的起义。他和他的 40 个战友被罗马军队包围在洞 3 中。他们在讨论是自杀还是被俘,最终决定自杀,并以抽签的方式决定谁杀掉谁。约瑟夫斯和另外一个人是最后两个留下的人。约瑟夫斯说服了那个人,他们将向罗马军队投降,不再自杀。约瑟夫斯把他的存活归因于运气或天意,他不知道是哪一个。 在计算机编程的算法中,类似问题又称为约瑟夫环:n 个人(编号 1~n)围成一圈,从编号为 1 的人开始,依顺时针方向进行。从 1 开始报数,报到 m 的人退出,从下一个人开始,继续从 1 开始报数,报到 m 的人退出,重复上述过程,直到仅剩 1 人为止(称为胜利者)。按顺序输出出列者编号,以及胜利者的编号。 【基本要求】 用一维数组存储。【测试数据】 m 和 n 的值自行设定。 题目三 复数运算 【问题描述】 复数是复变函数论、解析数论、傅里叶分析、分形、流体力学、相对论、量子力学等学科中最基础的对象和工具。设 z1=a+bi,z2=c+di 是任意两个复数,则复数的四则运算为: 相加 z3 = z1 + z2:z3 = a+bi + c+di = (a+c) + (b+d)i 相减 z3 = z1 + z2:z3 = a+bi –(c+di)= (a-c) + (b-d)i 相乘 z3 = z1 * z2:z3

文档评论(0)

hhuiws1482 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档