5.5 广义表的存储结构

广义表存储结构|数据结构 文章目录一、头尾链表的存储结构1、表头和表尾2、表结点和原子结点二、扩展线性链表的存储结构 一、头尾链表的存储结构 由于广义表的数据元素可以分为原子和广义表,由此需要两种结构的结点,一种是表结点(广义表),一种是原子结点(原子)。 非空广义表可以分解为表头和表尾。 1、表头和表尾 表头:非空广义表的第一个元素,可以是一个单原子,也可以是一个子表 表尾:去除表头之外其余元素构成的表,表尾一定是一个广... 阅读详情

 /* c5-5.h 广义表的头尾链表存储表示 */
 typedef enum{ATOM,LIST}ElemTag; /* ATOM==0:原子,LIST==1:子表 */
 typedef struct GLNode
 {
   ElemTag tag; /* 公共部分,用于区分原子结点和表结点 */
   union /* 原子结点和表结点的联合部分 */
   {
     AtomType atom; /* atom是原子结点的值域,AtomType由用户定义 */
     struct
     {
       struct GLNode *hp,*tp;
     }ptr; /* ptr是表结点的指针域,prt.hp和ptr.tp分别指向表头和表尾 */
   }a;
 }*GList,GLNode; /* 广义表类型 */

                                                                                                                         

 

 

 /* c5-6.h 广义表的扩展线性链表存储表示 */
 typedef enum{ATOM,LIST}ElemTag; /* ATOM==0:原子,LIST==1:子表 */
 typedef struct GLNode1
 {
   ElemTag tag; /* 公共部分,用于区分原子结点和表结点 */
   union /* 原子结点和表结点的联合部分 */
   {
     AtomType atom; /* 原子结点的值域 */
     struct GLNode1 *hp; /* 表结点的表头指针 */
   }a;
   struct GLNode1 *tp; /* 相当于线性链表的next,指向下一个元素结点 */
 }*GList1,GLNode1; /* 广义表类型GList1是一种扩展的线性链表 */

广义表存储结构图的绘制 最近看到广义表存储结构图绘制这一节,自以为课本上的例子看懂了,但是一上手画就出错,网上基本搜不到比较详细的解答,就自己试着去思考,总算是会了,先记录下来,免得后面又忘了。 先上结果: 说明如下 广义表里面一旦包含多个子表就会有很多括号,往往看的人无比痛苦,很容易搞错,于是先把大体层次框出来,分清楚每个括号的对应关系,便于后续过程。 画图形表示时,根据课本,列表用圆形表示,原子用方形(这里懒得画就省略了),画出相应的对应关系。 为什么要给表编号:课本上为了讲解表中元素亦可能是表,给出的例子就是编了号的,因为 阅读详情

相关推荐

【数据结构】算法5.5-5.8 广义表的头尾链表存储结构

#include<stdio.h> #include<string.h> #include<stdlib.h>#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2#define MAXSIZE 40 #define MAXSTRLEN 6 //最大字符

Zelda 的博客 3226

数据结构:深入理解广义表常用的两种存储结构(头尾链,孩子兄弟链)

深入学习广义表的两种存储结构,还有遇到空表时候画图,主要将两种结构给放在一期进行比较;巩固学习知识,特别是表尾要注意加一层,还有头尾链空表时候破坏层次结构。最后写广义表的算法一定要掌握递归。

Supine_0的博客 1万+

数据结构之广义表的相关知识点

一,广义表的基本概念: 广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构(即可以有子表)。它被广泛的应用于人工智能等领域的表处理语言LISP语言中。在LISP语言中,广义表是一种最基本的数据结构,就连LISP 语言的程序也表示为一系列的广义表。 二,广义表的基本表示: 1, 概念角度分析:...

IT之旅 的博客 1万+

【数据结构】广义表的存储结构及基本运算(C语言)

目录1. 广义表基本概念2. 广义表的存储结构2.1 头尾链表存储结构2.2 同层结点链存储结构3. 广义表的基本运算3.1 求表头、表尾3.2 求长度、深度3.3 统计原子数目3.4 广义表的复制 1. 广义表基本概念 广义表是n个数据元素(d1,d2,d3,…,dn)的有限序列,di 既可以是单个元素,也可以是一个广义表。通常记作GL =(d1,d2,d3,…,dn),n是广义表长度。若其中 di 是一个广义表,则称 di 是广义表GL的子表。在广义表GL中,d1是广义表表头,其余部分组成的表称为广义表

weixin_51450101的博客 7821

数据结构C语言——广义表

很久没有发博客记录了,不过应该也没人关心这个,哈哈哈。 突然想起来,学习也不能只是干学,稍微做点记录。 之前我对html、css、js基础有了一定的理解,也学了一些模板,不过现在我想先把计算机基础给补上,所以把数据结构理一理! 近在学习数据结构C语言版,有一些心得,跟大家分享一下 可能会有很多比较基础的知识,大佬勿喷! ok,我现在在学习广义表的结构,前边学的其他数据结构我后边会找时间在整理一下。下边是我对广义表的一些理解,大家可以适当的参考一下,如果方便的话,也麻烦帮我指出不足之处,给我这个想要继续往上的

White100的博客 1万+

C语言——数据结构之广义表(概念及其存储结构)

前言 本节我们来说说C语言中的广义表。主要介绍广义表的概念定义,并说明其存储结构,算法中将使用到递归思想。 一、广义表的概念 1.广义表的概念 (1)广义表:也称列表,是n(n>=0)个元素的有限序列 记作:LS=(a1,a2,…,an)ai(1<=i<=n)是数据元素或广义表 其中: LS:广义表名 n:LS的长度 通常,大写字母表示广义表的名称,小写字母表示数据元素 (2)原子:当广义表LS的元素是一个数据元素时,称为原子 (3)广义表的子表:当广义表LS的元素不是一个数据元素时,称

qq_51308373的博客 6109

广义表的两种存储结构:头尾链表+扩展的线性表存储结构

广义表的两种存储方法

ResumeProject的博客 5963

数据结构之---C语言实现广义表头尾链表存储表示

C语言实现广义表头尾链表存储表示

杨鑫newlife的专栏 5567

5.4广义表的定义&5.5广义表的存储结构

5.4广义表的定义&5.5广义表的存储结构

IT1995的博客 1万+

DDS信号发生器设计避坑指南:从AD9834配置到巴特沃斯滤波实战

本文详细解析了基于AD9834芯片的DDS信号发生器设计中的关键技术要点与常见陷阱,涵盖时钟源选择、寄存器配置时序、巴特沃斯滤波器设计等核心内容。针对中高频段信号质量优化,提供了实用的解决方案和代码示例,帮助工程师规避设计误区,提升信号发生器的性能和稳定性。

2y3u4i5o6p的博客 782

整理笔记——二极管

二极管是一种由半导体材料制成的一种具有单向导电性能的电子元器件,二极管的核心是PN结。加在二极管两端的电压和通关的电流被成为,二极管的伏安特性曲线​​​二极管的正向特性:起初正向电压较小时,正向电流几乎没有,称之为死区,此时二极管处于截止状态。当电压差超过截止电压(0.5V或者0.7V),电流随着电压上升,开始增加缓慢,随后急剧增大,二极管的电阻变小进入导通状态,此时电压变化较小。二极管的反向特性:起初反向电流很小,不随电压二变化,此时成为反向饱和电流;当方向电压达到二极管的反向击穿电压。

#include 811

数据结构5.3_广义表的定义和存储结构

广义表定义: 广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构。 一个广义表是n(n≥0)个元素的一个序列,若n=0时则称为空表。 GL=(a1,a2,…,ai,…,an) 其中n表示广义表的长度,即广义表中所含元素的个数,n≥0。如果ai是单个数据元素,则ai是广义表GL的原子; 如果ai是一个广义表,则...

weixin_34102807的博客 720

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

这一篇文章将采用SD卡作为存储硬件,利用SPI协议与SD卡通信,完成块设备驱动开发测试。 SD卡可以更加形象的表示块设备开发过程,明白硬件如何交互,完成数据读写。

2605

面试必考!广义表深度/长度计算的5种边界案例与图解分析

本文深入解析了数据结构面试中广义表的深度与长度计算,通过图解和5种典型边界案例(如空表处理、嵌套结构)进行精讲,帮助读者掌握递归思想和易错点,从容应对技术面试。

spice的博客 618

[ 人力资源面试篇 ] HR 面试题分析详解大集合,看完直怼面试官(二)

那么在这个系列的文章中,我们聊到 HR 面谈什么?并且总结了五十个常见的人力资源面试题,在这里分享给大家。

qq_51577576的博客 1380

Trae+雪球MCP,化身专业的股票分析师(玩转100个MCP系列第二弹)

大家好呀,我是程序员夏叶,深度AI编程使用者,专注于分享AI编程方面的使用技巧、经验以及前沿资讯,有兴趣的可以关注我的公众号,一起学习,共同进步。第二弹,使用Trae+雪球MCP,获取股票实时行情,分析股票走向等,写代码间隙看看股票价格,研究研究行情,哈哈。真的很不错呀,最关键的是,足够隐蔽,同事以为你在写代码,实际你在浏览股票行情,哈哈,感兴趣的可以试一下哦。说实话,沧州明珠这只股我算是砸手里了,不过还好买的不多,哈哈。

cpp加油站的专栏 518

DataStructure_第五章 数组与广义表 ( 矩阵的压缩存储及转置 / 广义表的定义及实现 )

文章目录压缩存储的矩阵的转置广义表 压缩存储的矩阵的转置 这里只实现压缩存储的矩阵的转置. 未压缩的二维数组矩阵的转置没啥好写的, 二重循环赋值完事儿了. /*** * @Author : acmaker * @Date : 2020-04-07 09:32:53 * @LastEditTime: 2020-04-07 12:52:18 * @FilePath ...

♡ 脚下的每一步都叫远方 ♡ 228

PCL ICP算法实现点云精配准【2026最新版】

PCL1.14.1 及之前版本所实现的迭代最近点ICP算法。博客长期更新,本文最新更新时间为:2026年4月17日。

点云侠的博客 31万+

顺序表、三元组顺序表、广义表

1、采用顺序表存储字符串,编写一个算法,Status StrAssign(SString T,char * chars) :串赋值函数,完成将chars指向的字符串赋值给T;2、请根据题意完成以下操作: 若存储结构采用三元组顺序表,请写一个算法实现,Status Judge(TSMatrix T,int i,int j),判断i,j下标所对应的数据是否为非零元。3、有广义表:C=(a, (b, c, d,e)) 。设计该广义表的扩展线性链表(孩子兄弟链表)的存储结构;1、 2、 3、...

huayu8086的博客 395

基于未来出行解决方案的场景实例:城市空中交通(UAM)的飞行路径规划与避障

本文介绍了使用Simulink进行城市空中交通(UAM)飞行路径规划与避障的仿真方法。主要内容包括:1)UAM系统架构与核心挑战;2)详细建模步骤,从城市3D环境构建到飞行器动力学模拟;3)全局路径规划(A*/RRT*)和局部避障(DWA/APF)算法实现;4)多机协同与冲突解决;5)关键场景仿真与性能评估;6)高级功能拓展方向。通过Simulink的数字孪生系统,可有效验证UAM在复杂城市环境中的可行性,为未来立体交通发展提供技术支撑。

xiaoheshang_123的博客 257

主成分分析(PCA)简洁高效MATLAB实现详解

本文介绍了一个简洁高效的PCA算法实现。该实现通过SVD分解计算主成分,避免了显式协方差矩阵计算,支持两种降维方式:固定维度或按能量比例自动选择。核心步骤包括数据中心化、SVD分解和维度选择,代码量少但功能完整,适用于数据预处理、降维和特征提取等任务。实现中考虑了稀疏矩阵转换、默认参数处理等细节,可直接应用于MATLAB环境。

m0_62153576的博客 63

5.5广义表

5.5广义表 广义表,也是线性表的一种推广。它被广泛的应用于人工智能等领域的表处 理语言 LISP 语言中。在 LISP 语言中,广义表是一种最基本的数据结构,LISP 语言 编写的程序也表示为一系列的广义表。 一、 广义表的概念 在第 2 章中,线性表被定义为一个有限的序列( a1 ,a2 ,a3 ,…, an),其中 ai被限定 为是单个数据元素。 广义表也是 n 个数据元素( d1 ,d2 ,d3 ,…, dn)的有限序列,但不 同的是,广义表中的 di 既可以是单个元素,还可以是一个广义表,通常记做

WithoutEndFree的博客 7348

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

数据结构-广义表

广义表又称列表,也是一种线性存储结构,通数组类似,广义表中即可存储不可再分的元素也能存储可在分元素。例如:数组中可以存储‘a’、3这样的字符或数字,也能存储数组,比如二维数组、三维数组,数组都是可在分成子元素的。广义表也是如此,但与数组不同的是,在广义表中存储的数据是既可以再分也可以不再分的,形如:{1,{1,2,3}}。如果创建一个二维数组来存储{1,{1,2,3}}。在存储上确实可以实现,但无疑会造成存储空间的浪费。广义表记作:其中,LS 代表广义表的名称,an 表示广义表存储的数据。...

有朋自远方来,不亦乐乎。 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

广义表

一、广义表的定义广义表简称表,它是线性表的推广。一个广义表是n(n≥0)个元素的一个序列,若n=0时则称为空表。设ai为广义表的第i个元素,则广义表GL的一般表示与线性表相同:            GL=(a1,a2,…,ai,…,an)其中n表示广义表的长度,即广义表中所含元素的个数,n≥0。如果ai是单个数据元素,则ai是广义表GL的原子;如果ai是一个广义表,则ai是广义表GL的子表。 广...

kong_xz的博客 4万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

广义表的存储结构(广义表的递归算法,复制广义表,求广义表的深度)

// c5-5.h 广义表的头尾链表存储结构(见图5.16) enum ElemTag{ATOM,LIST}; // ATOM==0:原子,LIST==1:子表 typedef struct GLNode { ElemTag tag; // 公共部分,用于区分原子结点和表结点 union // 原子结点和表结点的联合部分 { AtomType atom; // atom是原子结点的值域,

7urin9'Blog 5382
上一篇: 5.2 变长参数表(函数的实参个数可变)编程示例
下一篇: C语言union中包含struct 小结
sjmp
博客等级 码龄15年 56粉丝 104原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值