数据结构:广义表
2016-07-25 11:18
288 查看
概念:数组和广义表可以看成是线性表在下述含义上的扩展,表中数据元素本身也是一个数据结构。
广义表也可以看作是线性表的推广。
(1)广义表的元素可以是子表,而子表的元素还可以包含子表。
(2)列表可以被其他列表所共享。
(3)列表可以是一个递归的表,也就是说列表也可以是自身的子表。
由于广义表里面的数据元素可以具有不同的结构,所以使用的是链式存储结构,一个结点表示一个数据元素。
我在这里对于广义表结点的构造如下:(可能与书上不一致但是我较为习惯,功能一致)
三个域:标志域(元素类型的标志,0表示头结点,1表示int,2表示char,3表示子表)
数据域(依照标志域而数据不同,如果是头结点,则放的是指针计数)
指针域(指向下一个结点)
typedef enum[HEAD = 0,INT = 1,CHAR = 2,LIST = 3] NodeType;//用枚举表示类型
struct GenNode;//先声明一下结构体
typedef union
{
int ref;
int intinfo;
char charinfo;
GenNode* hlink;
}ElemType;//用的是联合体,这样子节省空间
struct GenNode
{
NodeType utype;
ElemType value;
GenNode *tlink;
}
有了这样一个结构体,接下来
(1)获得头结点
(2)获得普通结点
(3)依照相应元素想办法初始化广义表
(4)实现增删查改等操作
(5)注意不要发生内存泄漏
可以用字符串赋值的方式进行
对于广义表的构造,我学到的方式是通过类来构造,想来如果非要用结构体也是可以得。
可以通过构造函数来初始化广义表,参数形式就如上述所说可以是字符串
那么接下来的难题就只存在于如何把字符串分解开来然后作为一个个结点的数据构造出我们需要的广义表,由于能学到广义表,那我想链表方面应该都很熟练了,链表的构造添加什么的我就都不说了,唯一有可能有难度的就是子表的递归建立了,但是知道是用递归接着往上面靠就好了,如果要检验输出那么子表也要用递归的方式输出最佳,所以广义表相较于之前的数据结构其实不同的也就只是在于我们对于递归的运用而已。
广义表也可以看作是线性表的推广。
(1)广义表的元素可以是子表,而子表的元素还可以包含子表。
(2)列表可以被其他列表所共享。
(3)列表可以是一个递归的表,也就是说列表也可以是自身的子表。
由于广义表里面的数据元素可以具有不同的结构,所以使用的是链式存储结构,一个结点表示一个数据元素。
我在这里对于广义表结点的构造如下:(可能与书上不一致但是我较为习惯,功能一致)
三个域:标志域(元素类型的标志,0表示头结点,1表示int,2表示char,3表示子表)
数据域(依照标志域而数据不同,如果是头结点,则放的是指针计数)
指针域(指向下一个结点)
typedef enum[HEAD = 0,INT = 1,CHAR = 2,LIST = 3] NodeType;//用枚举表示类型
struct GenNode;//先声明一下结构体
typedef union
{
int ref;
int intinfo;
char charinfo;
GenNode* hlink;
}ElemType;//用的是联合体,这样子节省空间
struct GenNode
{
NodeType utype;
ElemType value;
GenNode *tlink;
}
有了这样一个结构体,接下来
(1)获得头结点
(2)获得普通结点
(3)依照相应元素想办法初始化广义表
(4)实现增删查改等操作
(5)注意不要发生内存泄漏
可以用字符串赋值的方式进行
对于广义表的构造,我学到的方式是通过类来构造,想来如果非要用结构体也是可以得。
可以通过构造函数来初始化广义表,参数形式就如上述所说可以是字符串
那么接下来的难题就只存在于如何把字符串分解开来然后作为一个个结点的数据构造出我们需要的广义表,由于能学到广义表,那我想链表方面应该都很熟练了,链表的构造添加什么的我就都不说了,唯一有可能有难度的就是子表的递归建立了,但是知道是用递归接着往上面靠就好了,如果要检验输出那么子表也要用递归的方式输出最佳,所以广义表相较于之前的数据结构其实不同的也就只是在于我们对于递归的运用而已。
相关文章推荐
- 数据结构(堆):SCOI 2009 生日礼物
- [从头学数学] 第247节 Python实现数据结构:栈
- 数据结构——树的术语
- 【Codeforces Round 364 (Div 2)C】【前缀和 双指针】They Are Everywhere 含有所有字符的最短区间长度
- 数据结构实验之二叉树三:统计叶子数
- 【栈】华为OJ:火车进站
- [从头学数学] 第246节 Python实现数据结构:链表
- 【HDU5751 BestCoder Round 84E】【FFT + 线段树求最值】Eades 最大数出现次数为[1~n]的区间个数
- C语言学习之 内存管理及数据结构操作
- 数据结构
- 对数据结构的一些了解
- 读书笔记-《大话数据结构》第一章数据结构绪论
- HDU 5296 Annoying problem(LCA模板+树的dfs序心得)
- 数据结构之希尔排序
- 数据结构之插入排序
- Linux内核的一种数据结构——task_struct
- nginx 哈希表数据结构
- 【搬运】浙大 数据结构 快速排序
- 【数据结构与算法】:倒数第K个数
- (模板题)sdut 3403 数据结构实验之排序六:希尔排序(希尔排序)