第1章 绪论

1.2 基本概念与术语

1.2.1 数据与数据结构

1.数据(Data)
2.数据元素(Data Item)
在不同条件下,数据元素又可称为结点、顶点和记录。
3.数据项(Data Item) 数据项是数据元素的组成部分。
4.数据对象(Data Object) 数据对象是性质相同的数据元素的集合。
5.数据结构(Data Structure) 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
对于数据结构的理解,实际上都离不开数据的逻辑结构、数据的存储结构和数据的操作这3个方面:

  • 逻辑结构
    数据的逻辑结构是指各个数据元素之间的逻辑关系。逻辑结构分为两大类,一类为线性结构,另一类是非线性结构(集合、树、图)。
    (1)集合结构
    集合结构中数据元素之间除了同属于一个集合的特性外,数据元素之间无其他关系,它们之间的关系是松散性的
    (2)线性结构
    数据元素之间存在一对一的关系。如果结构非空,则它有且仅有一个开始结点和终端结点。
    (3)树形结构
    数据元素之间存在一对多的关系。如果结构非空,则它有一个称为根的结点,根结点无前驱结点,其余结点有且仅有一个前驱,所有结点都可以有多个后继
    (4)图形结构
    数据元素之前存在多对多的关系。如果结构非空,则在这种数据结构中任何结点都可能有多个前驱和后继

数据的逻辑结构可以用一个二元组来定义,Data_Structure=(D,R)。D是数据元素的有限集,R是D上关系的有限集。R描述了D中数据元素之间的关联方式。

设R1∈R,则R1是 一个D XD的关系子集。若a1,a2∈ D,<a1,a2>∈R1,则称a1是a2的前驱,a2是a1的后继。a1和a2是相邻的结点。没有前驱的结点就是开始结点(或根节点),没有后继的结点就是终端结点(或叶子节点)。

  • 存储结构

数据的存储结构(物理结构)是数据的逻辑结构在计算机中的实现。
在计算机中最小的数据表示单位是二进制数的一位(bit)。 数据元素之间逻辑关系的存储表示则通常有以下4种方式。
(1)顺序存储方式
将所有的数据元素存放在一片连续的存储空间中,并且使逻辑上相邻的数据元素其对应的物理位置也相邻。通常用数组来实现。
(2)链式存储方式
数据元素可以存储在任意的物理位置上。数据元素的存储表示由两部分组成,一部分存放数据元素值本身,另一部分用于存放表示逻辑关系的指针。
(3)索引存储方式
在存储数据元素的同时,还增设了一个索引表。索引表的每一项包括关键字和地址。关键字是能够唯一标识一个数据元素的数据项。地址是指数据元素的存储地址或存储区域的首地址。
(4)散列存储方式
将数据元素存储在一片连续的区域内。每个数据元素的具体存储地址是根据该数据元素的关键字值,通过散列(哈希)函数直接计算出来的。

上面4中存储方式中,顺序存储和链式存储是最基本最常用的两种存储方式。索引存储和散列存储是为了提高查找效率而经常使用的两种存储方式。

1.2.2 数据类型

可用java语言中的数组类型来实现顺序存储结构,用java语言中提供的对象引用来实现链式存储结构。

一个数据的数据类型描述了三个方面的内容:存储区域的大小(存储结构)、取值范围(数据集合)和允许进行的操作。

java语言提供了8种基本数据类型,分别是:整型(byte,short,int,long)、浮点型(float,double)、布尔型(boolean)和字符型(char)。

为了充分体现数据的封装性和信息的隐蔽性,在设计类的成员时,应该遵循以下原则:

  • 类的成员变量应该设为私有,这样就能令使用该类的用户不能直接访问这些成员变量
  • 为访问和修改私有成员变量提供相应的get和set公有方法
  • 仅在类中调用的辅助成员方法应该设置为私有的

1.2.3 抽象数据类型

这种把数据的使用与实现分离开来的做法称为数据抽象(Data Abstraction)。抽象数据类型是指隐藏了数据的存储结构并且不涉及操作的实现细节的数据类型。

抽象数据类型的描述有两种方法:

  • 第一种用抽象类表示,继承该抽象类的
  • 第二种用接口表示,实现该接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值