考试学习中心网

咨询投诉0931-8254357
主办单位:元海德教育宗旨:富家 兴教
0931-8254357

当前位置:主页 > 学习中心新 > 第二学位 >

第三节 - 广义表基础

发布时间:2020-09-20 10:45来源:未知

第三节 广义表基础

一、广义表的定义

广义表是线性表的推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构。

1、广义表定义

广义表是n(n≥0)个元素a1,a2,…,ai,…,an的有限序列。

其中:

①ai--或者是原子或者是一个广义表。

②广义表通常记作:

Ls=( a1,a2,…,ai,…,an)。

③Ls是广义表的名字,n为它的长度。

④若ai是广义表,则称它为Ls的子表。

⑤一个表展开后所含括号的层数称为广义表的深度

注意:

①广义表通常用圆括号括起来,用逗号分隔其中的元素。

②为了区分原子和广义表,书写时用大写字母表示广义表,用小写字母表示原子。

③若广义表Ls非空(n≥1),则al是LS的表头(head),其余元素组成的表(a1,a2,…,an)称为Ls的表尾(tail)。

④广义表是递归定义的

【例】

(1)A=()--A是一个空表,其长度为零,深度为1。

(2)B=(a)--B是一个只有一个原子的广义表,其长度为1,深度为1。

(3)C=(a,(b,c))--C是一个长度为2的广义表,第一个元素是原子,第二个元素是子表,深度为2。

(4)D=(A,B,C)=((),(a),(a,(b,c)))--D是一个长度为3的广义表,其中三个元素均为子表,深度为3。

(5)E=(C,d)=((a,(b,c)),d)--E是一个长度为2的广义表,第一个元素是子表,第二个元素是原子,深度为3。

(6)F=(e,F)=(e,(e,(e,…)))--F是一个递归的表,它的长度为2,第一个元素是原子,第二个元素是表自身,展开后它是一个无限的广义表,深度为∞。

2、广义表的几个重要性质:

(1)广义表的元素可以是子表,而子表又可以含有子表,因此广义表是一个多层次结构的表,它可以用图来形象地表示。

(2)广义表具有递归和共享的性质,例如,表F就是一个递归的广义表,D表是共享的表,在表D中可以不必列出子表的值,而是通过子表的名字来引用。

二、广义表的基本运算

广义表是对线性表和树的推广, 广义表的大部分运算与这些数据结构上的运算类似。  在此,只讨论广义表的两个特殊的基本运算:取表头head(Ls)和取表尾tail(Ls)。任何一个非空的广义表其表头可能是原子,也可能是子表,而其表尾一定是子表。

【例】已知有下列的广义表,试求出下面广义表的表头head()、表尾tail()、表长length()和深度depth()。

(1)A=(a,(b,c,d),e,(f,g));  (2)B=((a));

(3)C=(y,(z,w),(x,(z,w),a)); (4)D=(x,((y),B),D)。

【例】取出广义表A=((x,y,z),(a,b,c,d))中原子b的函数是__________。

真题选解

(例题·填空题)1、已知广义表如下:

A=(B,y) B=(x,L) L=(a,b)

要求:

(1)写出下列操作的结果

tail(A)=_______________.

head(B)=______________。

(2)请画出广义表A对应的图形表示。

(例题·填空题)2、已知广义表C=(a,(b,c),d),则:tail(head(tail(C)))= _________。

三、广义表的存储结构

1、结点结构

说明:(1)tag标志位,tag=1,该结点是子表,第二个域为slink,用以存放子表的地址;当tag=0时,该结点是原子结点,第二个域为data,用以存放元素值。

(2)link域是用来存放与本元素同一层的下一个元素对应结点的地址,当该元素是所在层的最后一个元素时,link的值为NULL。

【例】

运算的实现考试大纲没做要求,不讲。

本章小结

前两章讨论的线性表、栈和队列都是典型的线性结构,结构中数据元素都是不能分解的非结构的原子类型。它们的逻辑特征是:每个数据元素至多有一个直接前趋和直接后续。而多维数组和广义表是一种复杂的非线性结构,它们的逻辑特征是:一个数据元素可能有多个直接前趋和直接后继。

多维数组可以看成是线性表的推广。因为一旦确定数组是按行或按列优先顺序存储之后,每个数组元素之间的关系就同一维数组一样变成线性的了。因此,只要弄清楚多维数组按行优先顺序存储结构之后,它的运算就同线性表的运算类似。

本章主要介绍数组的逻辑结构特征及其存储方法、特殊矩阵和稀疏矩阵的压缩存储方法,压缩存储特殊矩阵和稀疏矩阵的各种运算及应用。以及广义表的逻辑结构、表的表头及表尾的求解。


免费咨询

  • 甘肃: QQ
  • 四川: QQ
  • 山西: QQ
  • 陕西: QQ
  • 0931-8254357