广义表_数据结构广义表的长度和深度

广义表_数据结构广义表的长度和深度概念广义表(GeneralizedLists)是n(n≥0)个数据元素a1,a2,…,ai,…,an的有序序列,一般记作:ls=(a1,a2,…,ai,…,an)其中:ls是广义表的名称,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

概念

    广义表(Generalized Lists)是n(n≥0)个数据元素a1,a2,…,ai,…,an 的有序序列,一般记作:
                                                           ls=(a1,a2,…,ai,…,an)
 
    
其中:ls 是广义表的名称,n 是它的长度每个ai(1≤i≤n)是ls 的成员:它可以是单个元素(“
广义表ls 的
单元素
”),也可以是一个广义表(“
广义表ls 的
子表
”)。
    
当广义表ls 非空时,称第一个元素a1 为ls 的表头(head),称其余元素组成的表(a2,…,ai,…,an)为ls 的表尾(tail)。
 
广义表的重要性质:
 
⑴广义表是一种多层次的数据结构。广义表的元素可以是单元素,也可以是子表,而子表的元素还可以是子表,…。
 
⑵广义表可以是递归的表,即广义表也可以是其自身的子表。例如表E 就是一个递归的表。
 
⑶广义表可以为其他表所共享。例如,表A、表B、表C 是表D 的共享子表。在D中可以不必列出子表的值,而用子表的名称来引用。
 
一些广义表的例子:
A =()
B =(e)
C =(a,(b,c,d))
D =(A,B,C)
E =(a,E)
F =(())
 

存储结构

头尾表示法
    由于广义表中的数据元素既可能是列表也可能是单元素,相应地在头尾表示法中结点的结构形式有两种:一种是
表结点,用以表示列表;另一种是
元素结点,用以表示单元素:
  1. 表结点中包括一个指向表头的指针指向表尾的指针
  2. 元素结点中应该包括所表示单元素的元素值
  3. 为了区分这两类结点,在结点中还要设置一个标志域:如果标志为1,则表示该结点为表结点;如果标志为0,则表示该结点为元素结点。
广义表_数据结构广义表的长度和深度
例子:
 
A =()
B =(e)
C =(a,(b,c,d))
D =(A,B,C)
E =(a,E)
F =(())
 
广义表_数据结构广义表的长度和深度
 
 
    
    
采用头尾表示法容易分清列表中单元素或子表所在的
层次
。例如,在广义表D 中,单元素a 和e 在同一层次上,而单元素b、c、d 在同一层次上且比a 和e 低一层,子表B 和C 在同一层次上。另外,最高层的表结点的个数即为广义表的长度。例如,在广义表D 的最高层有三个表结点,其广义表的长度为3。
 
孩子兄弟表示法
两种结点形式:一种是
有孩子结点,用以表示
列表;另一种是
无孩子结点,用以表示
单元素
  1. 在有孩子结点中包括一个指向第一个孩子(长子)的指针和一个指向兄弟的指针
  2. 在无孩子结点中包括一个指向兄弟的指针和该元素的元素值
  3. 为了能区分这两类结点,在结点中还要设置一个标志域:如果标志为1,则表示该结点为有孩子结点;如果标志为0,则表示该结点为无孩子结点。
广义表_数据结构广义表的长度和深度
例子:
 
A =()
B =(e)
C =(a,(b,c,d))
D =(A,B,C)
E =(a,E)
F =(())
 
广义表_数据结构广义表的长度和深度

 
    
    
采用孩子兄弟表示法时,表达式中的左括号“(”对应存储表示中的tag=1 的结点,且最高层结点的tp域必为NULL。
 
 
 

参考来源:C语言中文网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167189.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 验证码的作用及原理

    验证码的作用及原理验证码的发展历程从互联网诞生前期,互联网是没有验证码的。在论坛博客上发帖子,只要敲一下回车键按“发表”就可以了。然而,有白客就有黑客,随着计算机程序的愈发发展,黑客十分猖狂。他们编写了一种能够大量、重复编写信息的程序,伪装成人类用户,肆无忌惮的在网络上倾倒大量的、无意义的“僵尸”信息,垃圾邮件、垃圾广告、垃圾评论到处飞。更编写了模仿登录、恶意激活成功教程代码、刷票等恶意程序。这严重影响了互联网的正常运行,导致体验效果很差。以受影响最大的电子邮件的提供商为例:用户每天收到数以千计的垃圾邮件,严重影响工作效率。.

  • f_read 函数[通俗易懂]

    f_read 函数[通俗易懂]f_read函数声明如下:[cpp]viewplaincopyFRESULTf_read(FIL*fp,/*[IN]Fileobject*/void*buff,/*[OUT]Buffertostorereaddata*/UINTbtr,/*[IN]Numberofbytestoread*/

  • goland激活_最新在线免费激活

    (goland激活)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html08G05E7DZH-eyJsaWNlbnNlSW…

  • 从零开始学习EasyDarwin(概述篇)

    EasyDarin是什么  EasyDarwin是由国内开源流媒体团队维护的一款开源流媒体平台框架,从2012年12月创建并发展至今,从原有的单服务的流媒体服务器形式,扩展成现在的云平台架构的开源项目,更好地帮助广大流媒体开发者和创业型企业快速构建流媒体服务平台。EasyDarwin适合做什么  安防视频监控,移动互联网(安卓、IOS、微信)流媒体直播与点播,流媒体视

  • 采用dlopen、dlsym、dlclose加载动态链接库【转】

    采用dlopen、dlsym、dlclose加载动态链接库【转】

  • J2EE是什么意思_main()函数是java程序的执行入口

    J2EE是什么意思_main()函数是java程序的执行入口j2ee   J2EE简介  J2EEJava2平台企业版(Java2Platform,EnterpriseEdition)   J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。   J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依

    2022年10月11日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号