北京做网站公司哪家好,国外营销网站,100个简单的手工小制作,网站怎么在百度搜到广义表(广义表也称为列表#xff0c;是线性表的一种推广#xff0c;也是数据元素的有序序列) 一、基础 1.如何设定链表结点?广义表中的数据元素可能为单元素(原子)或子表#xff0c;由此需要两种结点:一种是表结点#xff0c;用以表示广义表;一种是单元素结点#xff0c;…广义表(广义表也称为列表是线性表的一种推广也是数据元素的有序序列) 一、基础 1.如何设定链表结点?广义表中的数据元素可能为单元素(原子)或子表由此需要两种结点:一种是表结点用以表示广义表;一种是单元素结点用以表示单元素(原子)。 2.广义表的每个元素都是原子时广义表便成了线性表。 3.广义表具有以下重要的特性: (1)广义表中的数据元素是有相对次序的。 (2)广义表的长度定义为最外层包含元素的个数。 (3)广义表的深度定义为所含括弧的重数,其中原子的深度为0,空表的深度为1。看右侧括号的个数即深度, 一个广义表的深度等于括号联套的最大层数。 (4)广义表可以共享一个广义表可以被其他广义表共享这种共享广义表称为再入表。 (5)广义表可以是一个递归的表一个广义表可以是自己的子表这种广义表称为递归表。递归表的深度是无穷值而长度是有限值。 (6) 任何一个非空广义表GL均可分解为表头head(GL) a1和表尾tail(GL) ( a2,…,an) 两部分。 (7) 广义表的取表尾运算是非空广义表除去表头元素剩余元素组成的表。 (8) 广义表是一种递归的数据结构因此很难为每个广义表分配固定大小的存储空间所以其存储结构只好采用动态链式结构。 (9) 若一个广义表的表头为空表则此广义表亦为空表。 4. 在广义表的存储结构中每个结点均包含3个域。 5. 对矩阵压缩是为了节省存储空间. 6.对于一个非空广义表可能不含任何原子元素 7.一个广义表的表尾肯定为一个广义表 8.广义表可以是一个多层次的结构 9.数据结构中数据的逻辑结构分为线性结构和非线性结构。 10常用的线性结构有线性表栈队列双队列数组串。 11.常见的非线性结构有二维数组多维数组广义表树(二叉树等)图。 12.线性结构是一个有序数据元素的集合。关于广义表是一种非线性的数据结构。 13.多型数据类型是指包含的数据元素的类型并不确定。字符串不是多型数据类型栈是多型数据类型 二、例题
GetHead( GetTail(((a,b),(c,d))))(c,d) 解析:GetTail(((a,b),(c,d))) ((c,d)) GetHead( ((c,d)) ) (c,d) PSTail((a)) (a);Head((a)) a; 2.设广义表L ((), ())则hesd (L)是(); tail (L)是(()); L的长度是2;深度是2。 3.广义表(a, (a,b) ,d,e,((i,j),k)) 的长度是5深度是3。 4.已知广义表LS ((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是Head(Tail(Head(Tail(LS))))。 解析Tail(LS)((d,e,f)) Head(Tail(LS))(d,e,f) Tail(Head(Tail(LS)))e,f Head(Tail(Head(Tail(LS))))e