广义表的概念及存储表示
文章目录
- 广义表的概念
- 广义表的特性
- 广义表的表头和表尾
- 广义表的链接存储表示
- 头尾表示法
- 扩展线性链表表示法
广义表的概念
广义表的定义:广义表是 n ( n ≥ 0 ) n\ (n≥0) n (n≥0) 个表元素组成的有限序列。
广义表的表示: L = { e 1 , e 2 , . . . , e n } L=\{e_1,\ e_2,...,\ e_n\} L={e1, e2,..., en},其中
- L L L为表名
- e i e_i ei是表元素
- n n n是表长, n = 0 n=0 n=0是空表, n ≠ 0 n≠0 n=0是非空表
- “(” 和 ")"是表的分界符,不计入表的长度
广义表的表元素可以是不可再分的原子,还可以是广义表,称为广义表的子表。
广义表的特性
- 有次序:广义表的表元素的排列次序不能随意交换
- 有层次:广义表的表元素可以是子表,子表还可以有子表
- 有深度:最大嵌套层数即为广义表的深度,用括号重数来识别
- 可共享:广义表的子表可为多个广义表的子表
- 可递归:广义表的子表可以是自身
广义表的表头和表尾
- 广义表的表头:广义表的第一个表元素即为广义表的表头,它可以是原子,也可以是子表。
- 广义表的表尾:除第一个元素外的其他元素组成的表为广义表的表尾,它一定是广义表。
广义表的链接存储表示
广义表的表元素都是原子时退化为线性表,它的连接存储表示为单链表。
一般情况下,广义表的链接存储表示是双链表。
头尾表示法
双链表有两种结点:
- 表结点:代表广义表或子表,它的 h l i n k hlink hlink指针指向表头, t l i n k tlink tlink指向表尾,这是一种分支结点。
- 原子结点:用于存储数据,指向它的指针是 h l i n k hlink hlink,它是链尾的表结点,省去了收尾指针。
特别的,空表没有结点,指向它的指针为NULL。
例如,对于广义表 L = ( c , ( d , e , f ) , ( ) ) L=(c,(d,e,f),()) L=(c,(d,e,f),()),它的头尾存储表示如下:
扩展线性链表表示法
这种表示法不分表头和表尾。
双链表有两种结点:
- 表结点:它的 h l i n k hlink hlink指针指向该表的第一个表元素结点, t l i n k tlink tlink指针指向同一层下一个表元素结点。特别的,空表的 h l i n k hlink hlink和 t l i n k tlink tlink指针都为NULL。
- 原子结点:用于存储数据,有 t l i n k tlink tlink指针,指向同一层下一个表元素结点。
例如,对于广义表 L = ( c , ( d , e , f ) , ( ) ) L=(c,(d,e,f),()) L=(c,(d,e,f),()),它的扩展线性链表存储表示如下:
广义表的概念及存储表示相关推荐
- C语言——数据结构之广义表(概念及其存储结构)
前言 本节我们来说说C语言中的广义表.主要介绍广义表的概念定义,并说明其存储结构,算法中将使用到递归思想. 广义表是线性表的一种推广,在数据结构中有广泛应用. 一.广义表的概念 1.广义表的概念 (1 ...
- 广义表的头尾链表存储表示(第五章 P115 算法5.5,5.6,5.8)
/* 广义表的头尾链表存储表示 */typedef enum{ATOM,LIST}ElemTag; /* ATOM==0:原子,LIST==1:子表 */typedef struct GLNode{E ...
- 广义表及其存储方式简介
广义表(Lists,又称列表)是线性表的推广.线性表定义为n>=0个元素a1,a2,a3,-,an的有限序列.线性表的元素仅限于原子项,原子是作为结构上不可分割的成分,它可以是一个数或一个结构, ...
- 【数据结构】广义表的存储结构及基本运算(C语言)
目录 1. 广义表基本概念 2. 广义表的存储结构 2.1 头尾链表存储结构 2.2 同层结点链存储结构 3. 广义表的基本运算 3.1 求表头.表尾 3.2 求长度.深度 3.3 统计原子数目 3. ...
- 【数据结构】广义表的基本概念
广义表的基本概念 广义表不是考试的重点,只要理解基本概念就行了. 书上介绍的广义表,我觉得简单来理解的话就是狭义的列表,因为书上规定了列表的表头可以是原子或者子表,但是表尾必须是子表,在python中 ...
- 5.4广义表的定义5.5广义表的存储结构
广义表是线性表的推广. 广义表一般记作LS=(α1,α2,...,αn) n是它的长度αi可以是单个元素也可以说广义表,分别称为广义表LS的原子和子表. 当广义表LS非空时,称第一个元素α1为LS的表 ...
- 11广义表的基本概念和性质
广义表 广义表的概念 定义:广义表(又称列表Lists)是n≥0个元素,a0,a1,-,an-1的有限序列,其中每一个ai或者是原子,或者是一个广义表. 广义表通常记作:LS=(a1,a2,-,an) ...
- 数据结构之广义表的相关知识点
一,广义表的基本概念: 广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广.即广义表中放松对表元素的原子限制,容许它们具有其自身结构(即可以有子表).它被广泛的应用于人工智能等领 ...
- 广义表的链式定义和基础操作
广义表的定义 广义表(Lists,又称列表)是线性表的推广.线性表定义为n>=0个元素a1,a2,a3,-,an的有限序列.线性表的元素仅限于原子项,原子是作为结构上不可分割的成分,它可以是一个 ...
最新文章
- 百度paddle学习笔记
- C与CUDA混合编程的配置问题
- SQLSever触发器建立
- document.execCommand()函数可用参数解析 (转)
- lsof/netstat命令的一个重要作用: 根据进程查端口, 根据端口查进程
- python如何开启多线程_Python如何创建多线程
- Valid BFS? CodeForces - 1037D(思维 bfs)
- 接口测试--ApiPost组成介绍
- android打开文件管理获取文件名,如何从android中的文件路径获取文件名
- 解决Excel装了excel link 加载宏之后,打开excel就自动打开matlab的方法
- xmapp mysql启动失败 Attempting to start MySQL service...
- 求不大于N的最大质数
- 1055 集体照 (25 分)
- 计算机网络选择公用还是家庭,如何设置打印机共享?
- GPT分区规划与各分区作用解析
- 基于Impala的网易有数BI查询优化总结
- Tengine全面支持寒武纪思元芯片平台,共同推进AI芯片加速之路
- 最全的100个Python精选库,建议收藏!
- 万能密码或账号登录语句
- 跟百事斗了100年,可口可乐凭什么“赢”?