关系有两种表示方法
2007-12-02 13:48
375 查看
数据结构
存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。
在计算机中表示信息的最小单位是"位(bit)",任何一个数据元素都可以用一个 "位串" 表示,如,数值"321" 可用位串 101000001 表示,字母"A"可用位串 001000001 表示。当数据元素由多个数据项构成时,每个数据项即为表示数据元素的位串中的一个"子位串"。
关系有两种表示方法:
其一为"顺序映象"。以 "y 相对于 x 的存储位置" 表示 "y 是x的后继",例如,令 y 的存储位置和 x 的存储位置之间相差一个预设常量C,C本身是个隐含值,由此得到的数据存储结构为"顺序存储结构"。
其二为"链式映象"。以和x绑定在一起的附加信息(指针)表示后继关系,这个指针即为 y 的存储地址,由此得到的数据存储结构为"链式存储结构"。
可见,在顺序存储结构中只包含数据元素本身的信息,而链式存储结构中以"由数据元素 x 的存储映象和附加指针合成的结点"表示数据元素。
关系的最小单位是一个<x,y>的有序对,则讨论关系的表示方法只需讨论这个有序对的表示方法即可,即如何表示 "y是x的后继"。
顺序映象
链式映象
存储结构的描述方法随编程环境的不同而不同,当用高级程序涉及的油印间相编程时,通常可用高级编程语言中提供的数据类型描述之。
例如,当以"顺序存储结构"表示前述定义的长整数时,可将它定义为:
typedef int Long_int[3];
同样,此时对数据元素也要借用高级编程语言中的数据类型描述之。
对每一个数据结构而言,必定存在与它密切相关的一组操作。若操作的种类和数目不同,即使逻辑结构相同,数据结构能起的作用也不同。
不同的数据结构其操作集不同,但下列操作必不可缺:
1) 结构的生成;
2) 结构的销毁;
3) 在结构中查找满足规定条件的数据元素;
4) 在结构中插入新的数据元素;
5) 删除结构中已经存在的数据元素;
6) 遍历。
例如,定义"日期"为:
typedef struct {
int y; // 年号 Year
int m; // 月号 Month
int d; // 日号 Day
} DateType; // 日期类型
定义"学生"为:
typedef struct {
char id[8]; // 学号
char name[16]; // 姓名
char sex; // 性别
DateType bdate; // 出生日期
} Student; // 学生类型
存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。
在计算机中表示信息的最小单位是"位(bit)",任何一个数据元素都可以用一个 "位串" 表示,如,数值"321" 可用位串 101000001 表示,字母"A"可用位串 001000001 表示。当数据元素由多个数据项构成时,每个数据项即为表示数据元素的位串中的一个"子位串"。
关系有两种表示方法:
其一为"顺序映象"。以 "y 相对于 x 的存储位置" 表示 "y 是x的后继",例如,令 y 的存储位置和 x 的存储位置之间相差一个预设常量C,C本身是个隐含值,由此得到的数据存储结构为"顺序存储结构"。
其二为"链式映象"。以和x绑定在一起的附加信息(指针)表示后继关系,这个指针即为 y 的存储地址,由此得到的数据存储结构为"链式存储结构"。
可见,在顺序存储结构中只包含数据元素本身的信息,而链式存储结构中以"由数据元素 x 的存储映象和附加指针合成的结点"表示数据元素。
关系的最小单位是一个<x,y>的有序对,则讨论关系的表示方法只需讨论这个有序对的表示方法即可,即如何表示 "y是x的后继"。
顺序映象
链式映象
存储结构的描述方法随编程环境的不同而不同,当用高级程序涉及的油印间相编程时,通常可用高级编程语言中提供的数据类型描述之。
例如,当以"顺序存储结构"表示前述定义的长整数时,可将它定义为:
typedef int Long_int[3];
同样,此时对数据元素也要借用高级编程语言中的数据类型描述之。
对每一个数据结构而言,必定存在与它密切相关的一组操作。若操作的种类和数目不同,即使逻辑结构相同,数据结构能起的作用也不同。
不同的数据结构其操作集不同,但下列操作必不可缺:
1) 结构的生成;
2) 结构的销毁;
3) 在结构中查找满足规定条件的数据元素;
4) 在结构中插入新的数据元素;
5) 删除结构中已经存在的数据元素;
6) 遍历。
例如,定义"日期"为:
typedef struct {
int y; // 年号 Year
int m; // 月号 Month
int d; // 日号 Day
} DateType; // 日期类型
定义"学生"为:
typedef struct {
char id[8]; // 学号
char name[16]; // 姓名
char sex; // 性别
DateType bdate; // 出生日期
} Student; // 学生类型
相关文章推荐
- 堆栈的两种表示方法-数据结构学习笔记2.2
- Android开发:获取屏幕宽和高的两种方法(px、dip、分辨率之间的关系及px与dip互相转化)
- 在Linux系统中存储设备的两种表示方法
- 在Linux系统中存储设备的两种表示方法
- 在Linux系统中存储设备的两种表示方法
- andoid 逆向——两种不同的寄存器表示方法
- 在输入的字符串中判断是否有a,多种方法(比较前两种不同的表示方法)
- 余弦的两种表示方法:边长和向量
- shell中逻辑与的两种表示方法
- 程序员面试100题(算法)之整数的二进制表示中1的个数(两种方法)
- ZZUOJ 1199 大小关系(拓扑排序,两种方法_判断入度和dfs回路判断)
- UML类图元素及关系表示方法
- 专家指导 UML类图关系表示方法
- UML类图关系表示方法
- 在Linux系统中存储设备的两种表示方法
- 0003_20170226_【我是菜鸟】_equals与hashCode两种方法之间的关系
- 两种表示异常类的方法
- 在Linux系统中存储设备的两种表示方法
- UML基础(一)——UML中的类(接口)以及类关系的表示方法
- 在Linux系统中存储设备的两种表示方法