张翔-0604011022-广义表的运算问题.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文档。上传文档
查看更多
合肥学院 计算机科学与技术系 课程设计报告 2008~2009学年第1学期 课程 数据结构与算法 课程设计名称 广义表的运算问题 学生姓名 张翔 学号 0604011022 专业班级 06计科(1)班 指导教师 王昆仑、胡春玲 2008年09月 一、问题分析和任务定义 1、【题目15】: 广义表的运算问题。 2、要求和任务: 本设计要求实现广义表的建立、查找、输出、取表尾以及求深度、求逆表等。 3、数据的输入、输出: 输入:数据要求输入一个广义表,在各项数据输入完毕后要多输入一个右括号。 例如: 建立广义表,结束请多输一个右括号 ( a , ( b , c ) , d ) ) 输出:输出的是6种有关广义表的操作如下: 1 广义表的输出 2 广义表求深度 3 广义表取表头 4 广义表取表尾 5 广义表求逆表 6 广义表的查找(此项操作种要求用户输入要查找的项) 0 退出系统 4、算法测试用例设计: (a,(b,c),d) 二、数据结构的选择和概要设计 1、数据结构 在此问题中,使用到的数据结构有:广义表 广义表的定义: 广义表是n(n≥0)个元素a1,a2,…,ai,…,an的有限序列。 ? 其中: ???  ①ai--或者是原子或者是一个广义表。  ?  ②广义表通常记作: ?????????? ?? GList=( a1,a2,…,ai,…,an)。   ? ③GList是广义表的名字,n为它的长度。     ④若ai是广义表,则称它为Ls的子表。 注意: ???  ①广义表通常用圆括号括起来,用逗号分隔其中的元素。 ???  ②为了区分原子和广义表,书写时用大写字母表示广义表,用小写字母表示原子。 ???  ③若广义表GList非空(n≥1),则al是GList的表头,其余元素组成的表(a1,a2,…,an)称为GList的表尾。 ???  ④广义表是递归定义的 广义表的双链存储法接点类型描述如下: typedef enum{ATOM, LIST,BTOM}ElemTag; /*ATOM==0:原子,LIST==1:子表*/ typedef struct GLNode { int tag; /*公共部分,区分原子A和表结点*/ union /*原子结点和表结点的联合部分*/ { char atom; /*原子结点的值域*/ struct GLNode *sublist; /*表结点表头指针*/ }; struct GLNode *next; /*下一个元素结点*/ }GList; 广义表的图形表示: A = ( ) B = (6, 2) C = (a, (5, 3, x)) D = (B, C, A) DA D A B C 6 2 a 5 3 x 共享表 A 空表 B 6 2 线性表 C a 5 3 x 纯表 图1 带表头结点的链式存贮表示举例: D = (B, C, A) = ((6, 2), (a, (5, 3, x)), ( )) D = (B, C, A) = ((6, 2), (a, (5, 3, x)), ( )) 0 1 ^ 0 1 1 6 1 2 ^ 0 0 3 3 3 ^ 0 1 3 ^ 2 a 0 1 5 1 3 2 x ^ A B D C 图2 2、设计思想 广义表是线性表的一种推广,但它并不是线性表。课本上在介绍广义表的计本概念的基础上,介绍了广义表的存储及应用。广义表浓缩了线性表、数组等常见的数据结构的特点,在有效利用存储空间方面更胜一筹,目前在文本处理、人工智能、代数操作和计算机图形方面等各个领域都具有应用价值。 所以在我当时拿到这个题目的时候,虽然它只有短短的几行字,但是我深深的感觉到了它的难度,在后来课程设计中,也证实了我的感觉,每个功能都实在是太难实现了,所以只有各个击破了。设计程序时,先起草了流程图,通过流程图来看,就使得程序鲜明易懂,接下来先写好了主函数,通过主函数的调用,实现题目要求的各个功能,使得程序模块化,便于编写,即使不会写的子函数,也可以先空着,等待以后想到好的方法后再对其进行操作,同时在程序界面上也做了美化

文档评论(0)

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

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

1亿VIP精品文档

相关文档