今天早起学习数据结构,在求广义表深度的递归算法上发现一个问题

--------------广义表的头尾链表存储表示--------------------------typedef enum {ATOM,LIST}ElemTag;             //ATOM == 0:原子,LIST == 1:子表
typedef struct GLNode{ElemTag       tag;                //公共部分,用于区分原子结点和表结点union{                        //原子结点和表结点的联合部分AtomType atom;           //原子结点的值域struct{struct GLNode *hp,*tp;}ptr; //ptr是表结点的指针域,//ptr.hp和ptr.tp分别指向表头和表尾};
}*GList;                        //广义表类型------------递归算法求头尾链表存储方式的广义表深度-----------int GLsitDepth(GList L){//采用头尾链表存储结构,求广义表的深度if(!L)retrun 1;             <span style="white-space:pre"> </span>//空表深度为1if(L->tag == ATOM) retrun 0;          //原子深度为0 PS如果第一个结点就为原子,是否会直接跳出递归????for(max = 0,pp = L;pp;pp = pp->ptr.tp){dep = GListDepth(pp->ptr.hp);       //求以pp->ptr.hp为头指针的子表深度if(dep > max){max = dep;}}retrun max + 1;                    //非空表的深度是各元素的深度的最大值加一
}                           //GListDepth   

在递归算法的第4行,是否会在广义表中第一个元素是原子时直接跳出递归

That is a question!

原来在存储时,会将深度最大的表元素存入最外层的广义表中,受教了

广义表深度递归算法的问题相关推荐

  1. NOJ-求广义表深度-西工大数据结构

    我是"计算机科学与技术"专业的一名在校本科生,这是我的第一篇博文,用词不当还请各位看官多多包涵. 这篇博文是关于西北工业大学NOJ数据结构习题中的"求广义表深度" ...

  2. 西工大NOJ数据结构理论——014.求广义表深度(严5.30)

    第一下拿到这道题,我的脑袋轰一下就大了.如果说用"括号匹配"来做的话,这其实很简单.但是如果要用广义表来做的话,难度哗哗哗的就涨上来了.为什么呢?首先,要把读入的字符串存到广义表里 ...

  3. noj14求广义表深度

    广义表理论上很好理解,但是我感觉对我来说上手还有点困难(还是太菜). 先看广义表的一些定义吧 1 )什么是广义表 广义表,又称列表,也是一种线性存储结构,既可以存储不可再分的元素,也可以存储广义表,记 ...

  4. 广义表-求广义表深度,建立广义表,复制广义表

    广义表-求广义表深度,建立广义表,复制广义表 例: 广义表(a,(a,b),d,e,((i,j),k)) 求广义表的长度和深度 长度为5,深度为3 长度:有效逗号个数+1 深度:有效括号个数 求广义表 ...

  5. 数据结构14——求广义表深度(严5.30)

    Description 试按表头.表尾的分析方法编写求广义表的深度的递归程序. Input 输入一串以'('开始,以'('结束的字符串,并且输入的左右括号必须匹配,如:(),(())-- Output ...

  6. 求广义表深度(严5.30)

    Description 试按表头.表尾的分析方法编写求广义表的深度的递归程序. Input 输入一串以'('开始,以'('结束的字符串,并且输入的左右括号必须匹配,如:(),(())-- Output ...

  7. 【数据结构】NOJ014 求广义表深度

    //[数据结构]NOJ014 求广义表深度 //表头-表尾表示法#include <stdio.h> #include <stdlib.h> #include <stri ...

  8. noj14 求广义表深度

    关键是创建广义表 //求广义表深度 #include <stdio.h> #include <stdlib.h> #include <string.h>typede ...

  9. 【数据结构】NOJ014—求广义表深度

    题目描述:  解析: 题目要求用递归做,当然这个题用栈也可以做. (1)栈 遇见一个"("就把它压入栈,遇见一个")"就出栈一个"(".最后 ...

最新文章

  1. HDU-1789-Doing Homework again
  2. CentOS文件浏览器设置
  3. ElasticSearch 2 (21) - 语言处理系列之单词识别
  4. BZOJ3627 [JLOI2014]路径规划
  5. linux串口编程实例_Linux 网络编程——原始套接字实例:发送 UDP 数据包
  6. 【目标检测】单阶段算法--YOLOv4详解
  7. MTK 驱动(71)---DDR进行bitflip压力测试
  8. mac系统虚拟机上的Linux系统的使用说明
  9. 基于微信小程序开发——音乐播放器
  10. centos7安装redis并设置开机启动
  11. 使用vue写一个计时器
  12. spring3+hibernate4配置连接池C3P0
  13. Alpha阶段敏捷冲刺④
  14. try{}里面有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?
  15. 闵帆老师《论文写作》课程心得
  16. shell脚本:exit 0 和 exit 1有什么区别?他们和return不同,return是关键字,exit是一个shell函数
  17. 点到直线的距离公式和平行线的距离公式
  18. 线性代数之克莱姆法则
  19. pandas读取带中文的csv
  20. TPS54060/260调试记录

热门文章

  1. android安卓手机升级版本,安卓系统怎么更新升级
  2. 台式计算机机箱的作用,电脑机箱的作用有哪些 机箱的用途【详解】
  3. php 实现错字检查,检查字符是否在PHP中
  4. Vue前端JavaScript实现PDF预览与图片预览
  5. 玩客云刷home assistant(2023-01-19亲测)
  6. 什么是测试用例和测试规程,设计一个测试用例应当从哪几方面考虑?
  7. 大M法的python编程求解和python包求解
  8. 项目管理具有的基本特点
  9. jsp+ssm计算机毕业设计游戏装备交易网站论文2022【附源码】
  10. 网络图片访问不到,403的解决办法(详解)