数据结构第五周作业(广义表的深度、长度、存储结构)
1.
请写出下列广义表的深度和长度。
(1)A=()(2)B=(a)(3)C=(a,b,C)(4)D=(a,(A),(a,(b,(c,C))),d)(5)E=(a,(b,c),(d,(e),(f,(g))))(1)A = ()\\ (2)B = ( a )\\ (3)C = ( a, b, C)\\ (4)D = ( a, (A), (a, (b, (c, C))), d )\\ (5)E = ( a, ( b, c ), ( d, ( e ), ( f, ( g ))))(1)A=()(2)B=(a)(3)C=(a,b,C)(4)D=(a,(A),(a,(b,(c,C))),d)(5)E=(a,(b,c),(d,(e),(f,(g))))
广义表的长度就是广义表中第一层的元素个数。原子数据和子表都算作一个元素。
广义表的深度就是广义表中最大的嵌套次数,是广义表中所含括号的重数。是所有子表的最大深度加1。
(1)长度为0,深度为1.
(2)长度为1,深度为1.
(3)长度为3,深度为1.
(4)长度为4,深度为4.
(5)长度为3,深度为4.
2.
试画出上述广义表的存储结构示意图。
3.
编写一个算法,计算如下形式广义表的长度:
A=(a,(b,c),d,((e,f,(g,h)),i))A = ( a, ( b, c), d, ((e, f, ( g, h)), i ) )A=(a,(b,c),d,((e,f,(g,h)),i))
【注意】为简化操作,输入只包括字母、数字和“(”、“)”、“ ,”和空格,且任意多的空格不影响广义表的长度。
#include <stdio.h>
#include <stdlib.h>struct Lists
{ int Flag;
union {char Data;struct Lists *List;} Info; struct Lists *Link;
};void Setuplists(struct Lists **H, char *s)
{ struct Lists *p, *x; struct Lists *(S1[10]); //指针栈int top1 = 0, i=0; char c;(*H) = (struct Lists *)malloc(sizeof(struct Lists));(*H)->Flag = 1; (*H)->Info.List = 0; (*H)->Link = 0;p=(*H);while (s[i]!='\0'){ c = s[i++]; switch (c) { case '(' : x = (struct Lists *)malloc(sizeof(struct Lists));x->Flag = 0; x->Info.List = 0; x->Link = 0;p->Flag = 1; p->Info.List = x;S1[++top1] = p; p=x; break; case ',': x = (struct Lists *)malloc(sizeof(struct Lists));x->Flag = 0; x->Info.List = 0; x->Link = 0;p->Link = x; p = x; break;case ' ': break;case ')': p->Link = 0; p=S1[top1--]; break;default : p->Flag = 0; p->Info.Data = c; p->Link = 0;} } }void Printlists(struct Lists *H)
{ struct Lists *p; struct Lists *(S1[10]);int top1 = 0;p = H;while (p!=0 || top1!=0){ while (p!=0){ if (p->Flag==1) // 子表,进入下一层 //{ S1[++top1] = p; p=p->Info.List; printf("("); }else { printf("%c",p->Info.Data); p=p->Link; // 原子元素if (p!=0) printf(","); }} printf(")"); // 一个子表遍历结束 //p = S1[top1--]; p = p->Link; // 返回上一层,转后继 //if (p!=0) printf(","); }
}int Depthlists(struct Lists *H)
{ int dep=0, Maxdep=0, top1 = 0;struct Lists *(S1[10]), *p;p = H;while (p!=0 || top1!=0){ while (p!=0){ if (p->Flag==1) { S1[++top1] = p; p=p->Info.List; dep++; }else p=p->Link; }if (dep > Maxdep) Maxdep = dep; p = S1[top1--]; dep--; p = p->Link; }return(Maxdep);
}int Lenthlists(struct Lists *H) // 长度 //
{ int n=0;struct Lists *p;p = H->Info.List;while (p!=0) { n++; p = p->Link; }return(n);
}int main(){struct Lists *H;char a[100];char *s = gets(a);Setuplists(&H, s);Printlists(H);printf("\nlength = %d",Lenthlists(H));return 0;
}
#include <stdio.h>int main(){char a[100];char *s = gets(a);int max = 0,n = 0;while(*s){if(*s=='('){n++;}else if(*s==')'){n--;}if(max < n) max = n;s++;}printf("length = %d",max);return 0;
}
数据结构第五周作业(广义表的深度、长度、存储结构)相关推荐
- C语言——数据结构之广义表(概念及其存储结构)
前言 本节我们来说说C语言中的广义表.主要介绍广义表的概念定义,并说明其存储结构,算法中将使用到递归思想. 广义表是线性表的一种推广,在数据结构中有广泛应用. 一.广义表的概念 1.广义表的概念 (1 ...
- 数据结构(C语言)-广义表
广义表 一.广义表的定义和运算 1.广义表的定义 2.广义表的性质 二.广义表的存储 1.头尾表示法 2.孩子兄弟表示法 广义表是线性表的推广,也称为列表(Lists).线性表中的元素仅限于单个数据元 ...
- 【数据结构】CH6 数组和广义表
目录 前言 一.数组 1.数组的基本概念 (1)定义 (2)性质 (3)d维数组的抽象数据类型 (4)[例6.1] 2.数组的存储结构 (1)一维数组的存储结构 (2)二维数组的存储结构 (3)三维数 ...
- 陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯
陈斌老师<数据结构与算法Python版>第五周作业--ASCII谢尔宾斯基地毯 题目 思路 程序如下 总结 题目 谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中 ...
- 学号20189220 2018-2019-2 《密码与安全新技术专题》第五周作业
学号20189220 2018-2019-2 <密码与安全新技术专题>第五周作业 课程:<密码与安全新技术专题> 班级: 1892 姓名: 余超 学号:20189220 上课教 ...
- PHP第五周答案,算法设计与分析第五周作业——Word Ladder
算法设计与分析第五周作业--Word Ladder 上周找了一道深度搜索优先搜索的算法题来做,于是这周就选了一道广度优先搜索算法题来试试手. 本周所选题目:原题目链接 题目详情 题目大意:给出一个字符 ...
- BUAA数据结构第五次作业2023
文章目录 BUAA数据结构第五次作业2023 1. 树叶节点遍历(树-基础题) 题目 问题描述 输入形式 输出形式 样例输入 样例输出 样例说明 评分标准 问题分析 具体处理过程 完整代码 2. 词频 ...
- Linux创建名为vgtest的分区,第五周作业,
第五周作业, 1.磁盘lvm管理,完成下面要求,并写出详细过程: 1)创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷t ...
- Python第五周作业
Python第五周作业 1. 一元二次方程求根 2. 百钱买百鸡 3. 鸡兔同笼 4. 最大公约数和最小公倍数 5. 判断三角形并计算面积 6. 判断IP地址合法性 7. 回文素数 8. 反素数 9. ...
最新文章
- 如何正确配置Nginx+PHP
- 三种复位方式: 同步复位、异步复位、异步复位同步释放
- 【转】一位软件工程师的6年总结
- linux关机正确方法
- Ubuntu 中python 升级到3 后apt-get 一直报错
- Lvs+keepalived 高可用性负载均衡自动化配置
- 【c++】为什么类中静态(static)成员不能在类的定义内初始化?
- iOS中的多线程 NSOperation
- 重读经典:《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》
- 海豚的屠宰场--海豚湾
- (66)FPGA模块调用(Verilog调用Verilog)
- 【python】详解zipfile模块读取处理压缩文件实例
- Onvif之wsdl地址
- 用C语言多线程描述哲学家,并行程序设计-哲学家就餐问题
- TCP offload to the resuce 让TCP减负来挽救我们
- Hyperledger fabric-couchdb镜像版本的坑
- Retrofit 原理篇
- springboot整合mysql5.7_SpringBoot+MySQL,如何整合并使用MyBatis框架
- ProcessOn一款非常不错在线绘图工具
- 土地利用覆被变化的概念_土地利用与土地覆被变化研究综述