【前言】学完了顺序表,链表这些线性的数据结构,现在开始进入非线性的数据结构了。难度也比线性结构更大,本篇文章对广义表这种数据结构进行介绍并附上其实现的代码,广义表的实现主要应用递归,通过广义表可以更加理解和灵活使用递归,希望能给学习这块知识的朋友们带来帮助。
一、广义表概念
广义表是线性表的推广,是一种非线性的数据结构,也有人称其为列表。
举几个例子:
(1)A=() //A是一个空表
(2)B=(b) //B有一个元素
(3)C=(a, (b, c, d)) //C有两个元素分别是a和字表(b, c, d)
(4)D=(a, (a, (a, . . .))) //递归的表,相当于一个无限的列表。
从上面几个例子,我们可以得出重要的结论:
列表的元素可以是数据元素或子表,列表可以是一个递归的表。
二、广义表的存储结构:
由于广义表的元素可以具有不同的结构(数据元素或子表),所以难以用顺序存储结构表示,通常采取链式存储结构。
怎么来设置结点的结构呢?
我们设置三种结构的结点:
<1>头 HEAD <2>数据元素VALUE <3>子表 SUB