摘要: 一、散列函数 散列表是表示集合和字典的另一种有效方法,通过将关键码映射到表中某个位置来存储元素,然后根据关键码用同样的方法直接访问。 散列方法使用的转换函数即散列函数,散列函数不能太复杂。 散列函数定义域必须包括全部关键码,值域必须在0到m-1之间(m为散列表允许的地址数),通常关键码集合比散列地址 阅读全文
posted @ 2018-08-15 22:54 扬羽流风 阅读(792) 评论(0) 推荐(0) 编辑
摘要: 往往不做集合的并、交、差运算,而经常需要判定某个元素是否在给定集合中,并且对集合作插入、删除操作。 把字典定义为名字-属性对的组合,根据问题的不同,可以为名字和属性赋予不同的意义。 典型的字典组织方式有线性表、跳表、散列表 字典的抽象数据类型: 用有序链表表示字典 链表中的每个结点表示字典的一个元素 阅读全文
posted @ 2018-08-15 10:42 扬羽流风 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 适合需要反复用到查询某个元素归属于哪个集合的运算。 初始化时每个元素自成为单元素集合,parent均为-1。此后parent[x]>0时表示元素x的父在数组中的下标;parent[x]<0时表示以元素x为根的集合的元素个数 Find操作可以查询元素归属哪个集合,搜索并返回包含元素x的根即可,有两种方 阅读全文
posted @ 2018-08-15 10:40 扬羽流风 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 集合的成员是无序的,没有先后次序关系。 每个元素在集合中只出现一次,但在实际应用中却有元素重复出现的情况。 在某些集合中保存的是实际数据值,在某些集合中保存的是表示元素是否在集合中的指示信息。 集合的抽象数据类型: 1.使用位向量表示集合 用二进位数组(bit vector)来实现集合,数组采用16 阅读全文
posted @ 2018-08-15 10:39 扬羽流风 阅读(956) 评论(0) 推荐(1) 编辑
摘要: 广义表简称表,是线性表的推广,表中元素可以是数据元素(原子),也可以是子表。 广义表的表头(head)是表中第一个表元素、表尾(tail)是除了表头外其它元素组成的表。 首先要对广义表结点类GenListNode和返还值的结构类Item进行定义。它们都有一个用来标明结点类型的标志域utype、一个信 阅读全文
posted @ 2018-08-15 10:11 扬羽流风 阅读(1741) 评论(0) 推荐(0) 编辑