广义表

原创 2016年08月29日 08:21:40

1、广义表的相关概念

---- 广义表是线性表的推广,也称为列表(Lists),广义表一般记作:LS=(a1,a2,a3,...,an),其中LS是广义表的名称,n是长度。

线性表的元素是单个元素,而在广义表中,a1可以是单个元素,也可以是广义表,分别称为广义表LS的原子(Atom)子表(Glist).

一般用大写字母表示广义表,小写字母表示单个元素。当LS非空时,称第一个元素a1为LS的表头(Head),其余元素组成的表

(a2,a3,...,an)是LS的表尾(Tail)。下面是广义表的一些例子:

-- 1)A =():A是空表,长度为0.

-- 2)B =(e):B表只有一个元素e,长度是1.

-- 3)C =(a,(b,c)):C有两个元素,一个是单元素a,另一个是子表(b,c)。

-- 4)D =(A,B,C)=((),(e),(a,(b,c))):D有三个元素,都是子表。

-- 5)E = (a,E):E是一个递归的表,长度为2.

---- 结论

-- 1)广义表的元素可以是子表,而子表的元素也可以是子表,由此,广义表是一个多层的结构。

-- 2)广义表可用其他广义表来表示,即共享广义表。在上述例子中,广义表A、B、C都是D的子表,因此可以在D中通过广义表的

名字来引用,如D =(A,B,C)。

-- 3)广义表可以是一个递归的表。

广义表中括号嵌套的最大层数称为广义表的深度。如上例中,A的深度是0,B的深度是1,C的深度是2,D的深度是3.

2、广义表的存储结构

---- 由于广义表中的数据元素可以具有不同的结构,因此很难用顺序存储的方式,通常采用链式存储结构。


版权声明:本文为博主原创文章,未经博主允许不得转载。

建立树的两种方法以及用广义表显示树

一种是先序建树,一种是层序建树(自己瞎起的名字,呵呵) 1.先序建树(string用来以广义表形式显示树) void CreateBTREE(BTREE & BT ,string & lists)...
  • x5942110
  • x5942110
  • 2012年12月12日 02:10
  • 1177

广义表存储

节点形态: 存储结构: 每个节点都包含一个标志域,如果为0(即原子),那么仅含一个值域,如果是1(列表),那么说明该节点包含两个指针域。 需要注意的是求广义表长度...
  • RowandJJ
  • RowandJJ
  • 2014年05月14日 23:46
  • 2187

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

// c5-5.h 广义表的头尾链表存储结构(见图5.16) enum ElemTag{ATOM,LIST}; // ATOM==0:原子,LIST==1:子表 typedef struct GLNo...
  • KongkOngL
  • KongkOngL
  • 2014年08月21日 21:51
  • 1996

广义表的基本操作实现

广义表的四个特征:(1)广义线性表;(2)元素复合性;(3)元素递归性;(4)元素共享性     广义表的上述四个特征对于他的使用价值和应用效果起到了很大的作用。广义表的结构相当灵活,它可以兼容线性...
  • qq_28598203
  • qq_28598203
  • 2016年04月21日 19:19
  • 4008

广义表的创建

广义表是一种链式存储结构,广义表的表示方法有多种,在稍后的博文中我会依次给出各种广义表的算法代码实现。 首先简单的描述一下广义表的数据结构,广义表一般分为列表结点和原子结点。广义表中可以包含另一...
  • qq_20916555
  • qq_20916555
  • 2016年04月22日 18:56
  • 864

广义表的建立与一般操作C\C++

广义表的建立与一般操作C\C++ 一、广义表的概念         广义表是线性表的推广,但线性表的元素仅限于原子项,原子作为结构上不可分割的成分,它可以是一个数或一个结构,若放松对表元素的这种限...
  • g15827636417
  • g15827636417
  • 2016年10月20日 20:41
  • 1821

数据结构学习笔记之广义表的相关知识点

广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广,广泛的应用于人工智能等领域的表处理语言LISP语言中,因此,掌握对广义表的基础的CRUD操作很是重要...
  • qq_24754061
  • qq_24754061
  • 2016年06月04日 00:19
  • 1429

数据结构_数组与广义表_广义表的建立、遍历、复制、求深度

由一个存储着广义表信息的字符串建立一个广义表,并对其进行复制,求深度。 递归真是奇妙无穷啊,有些看似很复杂的东西只要找到规律就能进行递归求解。让我不得不对那些发现规律利用规律创造新事物的人肃然起...
  • Jack_Wong2010
  • Jack_Wong2010
  • 2011年10月27日 12:45
  • 7895

广义表的C语言实现

广义表的C语言实现 最近弄了一下这个广义表,将它的部分操作写了出来,以供大家共同学习,研究。开发工具:VC6.0 #include #include #include #define AtomType...
  • dayeshisir
  • dayeshisir
  • 2009年08月04日 12:41
  • 4707

广义表的读取和输出,树的拷贝及比较的实现

1. 树采用链表的形式保存,每一个节点设计成一个数据域和n个指针域, n为树的度,为了方便固定为树的最大度,但是有点浪费空间。 2. 实现的函数使用到栈来处理,遍历树时采用递归的方法。 //tre...
  • haoyuedangkong_fei
  • haoyuedangkong_fei
  • 2016年05月23日 18:29
  • 820
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:广义表
举报原因:
原因补充:

(最多只允许输入30个字)