课程设计报告广义表.docVIP

  • 168
  • 0
  • 约1.22万字
  • 约 28页
  • 2018-02-17 发布于贵州
  • 举报
课程设计报告广义表

数据结构课程设计报告 广义表的存储与运算 ——广义表 班 级: 软件112班 姓 名: 邱 日 龙 指导教师: 兰 红 成 绩: 信息工程学院 2012 年 12 月 31 日 目录 需求分析 3 题目 3 要求 3 对题目分析 3 数据的输入输出 3 算法测试设计用例 4 概要设计 4 各抽象数据类型的定义 4 广义表的扩展线性链表表示 4 广义表的图形表示 5 带表头结点的链式存储 5 广义表的运算问题流程图 5 详细设计 8 1. 功能目录 8 2. 主函数 9 3. 字符串变广义表 10 4. 广义表的复制 11 5. 广义表的输出 12 6. 广义表的长度 12 7. 广义表的深度 13 8. 广义表的表头 13 9. 广义表的表尾 14 10. 广义表变为字符串 14 11. 查找广义表中的字符 15 调试分析 15 测试结果 15 1. 字符串变广义表 16 2. 广义表的复制 16 3. 广义表的长度 17 4. 广义表的深度 17 5. 广义表的表头 18 6. 广义表的表尾 18 7. 广义表变为字符串 19 8. 查找广义表中的字符 19 9. 重新设定广义表 20 参考文献 21 需求分析 题目 选择合适的存储结构表示广义表 要求 (1)用大写字母表示广义表,用小写字母表示原子,并提供设置广义表的值的功能。 (2)取广义表L的表头和表尾的函数head(L)和tail(L)。 (3)能用这两个函数的复合形式求出广义表中的指定元素。 (4)由广义表的字符串形式到广义表的转换函数Str.To-Lists(S):Lists,例如Str.To-Lists(’(a,(a,b),c)’)的值为一个广义表。 (5)由广义表到广义表的字符串形式的转换函数Lists-To-Str(L):String。 (6)最好能设置多个广义表。 对题目分析 本题主要考察广义表的应用,所以之前先要对广义表要有一定的了解。线性表被定义为一个有限的序列(a1,a2,a3,…,an)其中ai被限定为是单个数据元素。广义表也是n个数据元素d1,d2,d3,…,dn的有限序列,但不同的是,广义表中的di 则既可以是单个元素,还可以是一个广义表,通常记作:GL=(d1,d2,d3,…,dn)。GL是广义表的名字,通常广义表的名字用大写字母表示。n是广义表的长度。若其中di是一个广义表,则称di是广义表GL的子表。在广义表GL中,d1是广义表GL的表头,而广义表GL其余部分组成的表(d2,d3,…,dn)称为广义表的表尾。由此可见广义表的定义是递归定义的。因为在定义广义表时,又使用了广义表的概念。GList *StrToLists(char *s):字符串变为广义表的函数 char *ListsToStr(GList *L,int k):广义表变为字符串的函数 GList *CopyGList(GList *p):复制广义表的函数 int length(GList *L):计算广义表长度的函数 int depth(GList *L):计算广义表深度的函数 int Find(GList *L,char ch):计算广义表深度的函数 void PrintGList(GList *L):打印广义表的函数 GList *head(GList *L):取广义表表头的函数 GList *tail(GList *L):取广义表表尾的函数 广义表的扩展线性链表表示 typedef struct GLNode { int tag; // tag为公共部分,只能为1和0,1代表 //表结点,0代表原子结点 union // 原子结点和表结点的联合部分 { ElemType data; // 原子结点的值域 struct GLNode *ph; // 表结点的表头的表头指针 }ptr; struct GLNode *pt; // 相当于线性链表的next,指向下一个元 //素结点 }GList;

文档评论(0)

1亿VIP精品文档

相关文档