#include <stdio.h>
#include <stdlib.h>typedef struct Node
{int A_L;//使用枚举不熟练,A_T代表Atom或List,0为Atom,1为ListNode *before;//额外创建一个指针指向之前Node *tail;union{Node *down;char data;};
}Node;void CreatLists (Node *pre)
{     //初始化后创建一个广义表char s,ss=0;Node *cur;//一下分别讨论字符串中出现各种字符的情况if ((s=getchar())==','){ss=s;s=getchar();}if (s>='a'&&s<='z')//如果是字母的情况{cur =(Node *)malloc (sizeof(Node));if (ss==','){pre->tail=cur;}else{pre->down=cur;}cur->before=pre;cur->data=s;cur->tail=NULL;cur->A_L=1;CreatLists (cur);}else{if (s=='(')//如果是左括号{cur =(Node *)malloc (sizeof(Node));if (ss==','){pre->tail=cur;}else{pre->down=cur;}cur->before=pre;cur->down=NULL;cur->tail=NULL;cur->A_L=0;CreatLists (cur);//递归创建}else{if (s==')')//如果是右括号{while (pre->A_L||pre->tail){pre=pre->before;}CreatLists (pre);}}}
}void creatL (Node *head)
{//广义表的初始化head->A_L=0;head->down=NULL;head->tail=NULL;head->before=NULL;CreatLists(head);//初始化后建立广义表
}int getDepth (Node *node)
{     //得到广义表的深度,通过递归调用int max=0,depth;Node *p;for (p=node->tail;p;p=p->tail){if (p->A_L){depth=0;//}else{if (p->down){depth=getDepth(p->down)+1;   //递归调用得到下一层的深度}else{depth=1;}}max=depth>max?depth:max;}if (node->A_L){depth=0;}else{if (node->down){depth=getDepth(node->down)+1;}else{depth=1;}}return max=depth>max?depth:max;
}int main()
{Node head;int depth;creatL(&head);//创建广义表depth=getDepth(head.down);printf ("%d\n%d",depth,depth);return 0;
}

西北工业大学NOJ数据结构—014求广义表深度相关推荐

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

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

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

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

  3. 西北工业大学noj数据结构表达式括号匹配(严3.19)

    这道题要求我们判断输出的一个字符串中的括号是否符合运算规律.可以运用栈的思想.如果一个括号是左括号就入栈,如果输出一个右括号就将它和栈头的左括号对比,符合就出栈(相当于消掉).最后如果还有没消掉的括号 ...

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

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

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

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

  6. noj14求广义表深度

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

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

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

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

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

  9. noj14 求广义表深度

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

最新文章

  1. makefille的使用
  2. checkpoint技术mysql_认识MySQL中的Checkpoint技术
  3. java stream 多个filter_恕我直言你可能真的不会java第3篇:Stream的Filter与谓词逻辑...
  4. hdu2089 不要62 数位dp
  5. vscode新建html中文乱码,vscode中html中文乱码 怎么办
  6. 对无线编码缓存的一些理解
  7. 毕业设计一周一记02
  8. Jsoup 爬虫之百度贴吧
  9. 关于Android端模拟登陆教务系统
  10. 选择婚庆公司的注意事项
  11. 从零开始学USB(一、基础知识1)
  12. 第三方SIP 软电话xlite注册到CUCM
  13. Mysql.ACID
  14. java手机验证码代码_发送手机验证码
  15. Kad算法模拟测试程序
  16. 《亚马逊逆向工作法》读书笔记
  17. rk3288 gpio操作
  18. 开源免费WMS仓库管理系统【推荐】
  19. linux网络操作系统使用教程课本答案(崔升广 赵红岩)
  20. 恐怖,差4000万,印度人口超中国!!

热门文章

  1. Vector3.Lerp 和 Vector3.SmoothDamp 使用的注意事项
  2. 物联网卡在物联网生态中扮演着什么样的角色?
  3. 线上推广新方式,VR全景展示如何吸引用户的关注?
  4. LINUX7 开启telnet服务,centos7开启telnet服务
  5. 我的世界java版hud怎么设置_[MH]迷你HUD (MiniHUD)
  6. 利用CRM提高客户忠诚度
  7. spring应用上下文的理解
  8. 母亲将患感冒婴儿扔下楼后跳楼(图)
  9. Flutter 的野心,Google 的认真,是时候准备走一波了
  10. 百度空间CSS代码总教程