数据结构课程设计实习报告.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文档。上传文档
查看更多
数据结构课程设计实习报告

数据结构课程设计实习报告 班 级:地信11102班 学生姓名: 任亮 学 号: 201101252 长江大学 2013.7 目 录 一、需求分析 1 二、逻辑设计 2 三、详细设计 5 四、程序编码 9 五、程序调试与测试 35 六、结果分析 39 需求分析: 1、程序一:单链表的应用 (1)要求生成线性表时,可以键盘上读取元素。通过在键盘上输入的数据构造成单链表,进而对构造成的单链表进行插入、删除、遍历等操作的实现。 (2)限制条件是要求在生成线性表的时候,线性表中的元素是从键盘上输入而不是自动生成,这样就可以对自己想要进行的元素序列进行各种操作。 2、程序二:二叉排序树的操作 (1)建立二叉树,并输出二叉树的先序,中序和后序遍历序列,以及二叉树的叶子数。 (2)要求根据读取的元素建立二叉树,能输出各种遍历。 (3)可通过输入带空格的前序序列建立二叉链表。 附加功能:输出了二叉树的深度。 程序三:哈夫曼编码器(未严格依照要求) 从键盘接受一串电文字符,输出对应的Huffman编码。同时,能翻译由Huffman编码生成的代码串,输出对应的电文字符串。 程序四:停车场管理 设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次有北向南排列(大门在最南端,最先到达的第一车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 逻辑设计: 图一、主函数总体设计 1、功能一 图二、单链表的基本操作 2、功能二 图三、二叉树的基本操作 3、功能三 图四、哈夫曼树的基本操作 4、功能四 图五、停车场管理系统 详细设计: 1、单链表的操作(流程图) 图六、单链表插入 图七、单链表的删除 2、二叉树的基本操作(流程图) 图八、二叉树的前序遍历 图九、二叉树的中序遍历 图十、二叉树的后序遍历 哈夫曼树的详细设计 、构造哈夫曼树。 根据Huffman算法:若已知有n个叶子节点,则构造的huffman树有2n-1个结点。 先输入字符集中的n个字符(叶子节点)和表示其概率分布的权值,存储在HuffNode型数组的前n个数组元素中。然后将2n-1个结点的双亲和左右孩子均置为0。 在所有的节点中,选取双亲为0,且具有最小权值m1和次小权值m2的两个结点,用p1和p2指示这两个结点在数组中的位置。将根为ht[p1]和ht[p2]的两颗树合并,使其成为新节点ht[i]的左右孩子,ht[i]的权值为最小权值m1和次小权值m2之和;ht[p1]和ht[p2]的双亲指向i。重复上述过程,共进行n-1次合并就构造了一颗Huffman树。当进行n-1次合并时,产生n-1个结点,依次放在ht数组中,数组的下标从n到2n-2。 、编码。 基本思想:从Huffman树的叶子节点ht[i]出发,通过双亲parent找到其双亲ht[f],通过ht[f]的left和right域,可知ht[i]是ht[f]的左分支还是右分支,若是左分支,生成代码0;若是右分支,生成代码1,代码存放在数组cd[start]中,然后把ht[f]作为出发点,重复上述过程,直到找到根节点为止。 、译码。 基本思想:首先输入二进制代码串,存放在数组ch中,以“#”为结束标志。接下来,将代码与编码表比较,如果为0,转为左子树;若为1,转为右子树,直到叶子节点结束,此时输出叶子结点的数据域,即所对应的字符。继续译码,直到代码结束。 停车场管理系统的详细设计 、模拟停车场车辆进出时需要输入车辆的信息,包括车牌号码以及进入和离开的时刻,因此可以定义一个时间节点类型和一个车辆信息结点类型,在顺序栈及链式队列中定义结点类型为车辆信息结点类型。 、当车辆离开后,需要打印输出车辆离开后的信息,如离开时间、离开时的所在位置和应缴纳的费用等,定义函数Print实现。 、车辆到达时需要用户输入车辆的信息,接着要判断栈是否已满,如果当前站未满,则进行入栈操作,即车辆进入停车场;如果栈已满,则车辆必须进入便道等待。用函数Arrival实现。 (4)、车辆的离开,则需要另设一个栈,给要离去的汽车让路而从停车场退出来的汽车临时停放,也用顺序栈实现,车辆离开后需检查便道内是否有车等待,如有等待的车辆则进行便道内的车辆进入停车场的操作,即将车辆信息

文档评论(0)

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

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

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档