八、数据结构-线性扩展-广义表

广义表的成分可以是单元素,也可以是有结构的表。线性表是一种特殊的广义表,但广义表不一定是线性表,也不一定是线性结构。
广义表的基本运算:
(1)求表头GetHead(L):非空广义表的第一个元素,可以是一个单元素,也可以是一个子表
(2)求表尾GetTail(L):非空广义表除去表头元素以外其它元素所构成的表。表尾一定是一个表
例题:A=(a,b,(c,d),(e,(f,g))),
GetHead(GetTail(GetHead(GetTail(GetTail(A))))) 结果为?(答案:d)
过程:
tail第一步: (b,(c,d),(e,(f,g)))
tail第二步:((c,d),(e,(f,g)))
head第三步:(c,d)
tail第四步:(d)
head第五步:d

广义表特点:

  • 有次序性 一个直接前驱和一个直接后继
  • 有长度 =表中元素个数
  • 有深度 =表中括号的重数
  • 可递归 自己可以作为自己的子表
  • 可共享 可以为其他广义表所共享


    广义表计算举例

广义表的图形表示:(图中○表示广义表,□表示原子)

广义表的图形表示

广义表的存储:
因为广义表的数据元素可以是不同结构,所以难以用顺序存储,通常用链式存储的方式。广义表的链式存储又包括头尾链表和扩展线性链表两种。

表结点包括三个域:标志域、指示表头指针域和指示表尾指针域。
原子结点包括两个域:标志域和值域。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容