广义表是线性表的扩展,具体定义为n(n³0)个元素的有限集合。其中元素有以下两种类型:
一个原子元素(指不可再分割的元素)
一个可以再分割的元素(或称为一个子表)
如果所有元素是原子元素,则称为线性表,如果含有子表,则是广义表。n的值是广义表的长度,如果n=0,称广义表为空表。
广义表中含有元素的个数称为广义表的长度,广义表中含有的括号对数称为广义表的深度。
列表的3个重要结论:
1.列表的元素可以是子表,而子表的元素还可以是子子表……由此,列表是一个多层次的结构,可以用图形象的表示。
2.列表可为其他列表所共享
3.列表可以是一个递归的表,即列表也可以是其本身的一个子表。
广义表的存储一般用链表存储。
广义表的逻辑结构:
其中flag表示标志位,当flag为0时,该结点表示原子元素,当flag为1时,该结点表示子表;当flag为0时,info表示原子元素的值,当flag为1时,info表示指针,指向该子表的第一个结点;link表示指针,指向广义表的下一个元素。
一个原子元素(指不可再分割的元素)
一个可以再分割的元素(或称为一个子表)
如果所有元素是原子元素,则称为线性表,如果含有子表,则是广义表。n的值是广义表的长度,如果n=0,称广义表为空表。
广义表中含有元素的个数称为广义表的长度,广义表中含有的括号对数称为广义表的深度。
列表的3个重要结论:
1.列表的元素可以是子表,而子表的元素还可以是子子表……由此,列表是一个多层次的结构,可以用图形象的表示。
2.列表可为其他列表所共享
3.列表可以是一个递归的表,即列表也可以是其本身的一个子表。
广义表的存储一般用链表存储。
广义表的逻辑结构:
其中flag表示标志位,当flag为0时,该结点表示原子元素,当flag为1时,该结点表示子表;当flag为0时,info表示原子元素的值,当flag为1时,info表示指针,指向该子表的第一个结点;link表示指针,指向广义表的下一个元素。