数据结构基础概念总结2.28
英文 | 对应中文 |
---|---|
Data Item | 数据项 |
Data Element | 数据元素 |
Data | 数据 |
Keyword/ Primary Keyword | 关键字/主关键字 |
Data Structure | 数据结构 |
Index | 序号(索引) |
Node | 结点 |
Traverse | 遍历 |
Sort | 排序 |
一、基本概念
1.什么是数据?
数据项组成数据元素,数组元素的集合称为数据。
- 数据项是XXXX中有XX含义的、不可XX的XXXX单位。
- 数据元素是XX的XX单位。
2.什么是数据结构?
指n个数据元素之间组成的有限集合,元素间存在某种特定的关系.
包含三个方面:逻辑结构、存储结构、操作。
3.什么是关键字/主关键字?
能够识别该元素的一个或多个数据项/唯一识别数据元素的关键字。
【数据元素;独立;分割;最小标识;数据;基本】
二、逻辑结构
(使用前驱数据元素、后继数据元素可以定义)
1.线性结构:?
采用XX(index)确定数据元素的逻辑次序,数据元素之间有XX关系
- e.g:简单表格
2.树结构:?
有XX关系的非线性结构,其中的数据元素常被称作XX
- e.g:组织架构
3.图结构:?
- e.g:合作关系,路径
【序号;顺序;层次;结点】
三、存储结构
定义:数据元素及其XX在计算机中的存储XX或XX
1.顺序存储结构e.g.数组
申请空间、获取空间、返回基地址
困难:当存储空间不连续的时候无法获取
2.链式存储结构
头指针+(数据域+下一个元素的地址指针)*n
PS:二者可以结合起来实现存储,且结点已经为最小单位。
【关系;表示;实现】
四、数据操作
1.初始化
int a[] = {1, 2, 3, 4, 5};
2.判断是否为空状态
if(str.equals("") || str == null )
PS:区分String里面的空串和null串。
- 空串是长度为0内容为空
- null串是没有指向任何对象
3.存储,指获得、设置特定元素
public char charAt(int index)
public String replace(char oldChar,char newChar)
4.统计数据元素个数
public int length()
5.遍历+查找
public int indexOf(int ch)
public int indexOf(int ch, int fromIndex)
public int lastIndexOf(int ch)
public int lastIndexOf(int ch, int fromIndex)
6.插入、删除指定元素
public String trim()//删去首尾多余的空格
str.insert(int index,String str2)
7.排序
五、数据类型与抽象数据类型
1.数据类型:
一个类型和定义在这个类型上的XX的集合
- 基本数据类型:int…
- 构造数据 类型:数组、类、结构
2.抽象数据类型(ADT)
一个XX模型和定义在该模型上的一组XX
即抽象类(包含变量和方法),包括数据的逻辑结构和数据操作
【例1】编写复数的抽象数据类型,要求可以实现的操作有复数加减法
ADT Complex//缺省抽象类?
{
double real, imag;
Complex(double real,double imag)//构造方法
Complex add(Complex c)//add方法,返回值类型为Complex且传入参数也为Complex
Complex sub(Complex c)//注意,是抽象方法后面没有分号
}
【例2】编写集合的抽象表示与实现,要求:使用泛型,且实现以下操作功能
- 判断集合是否为空
- 返回集合元素个数
- 查找关键字为key的元素
- 增加元素x
- 取出某个元素x,并返回它
- 删除所有元素
- 返回集合所有元素描述的字符串
- 返回包含集合所有元素的数组
- 运算:去并集
ADT Set<T>// 抽象泛型类
{
//没有需要定义的数据成员
//以下是抽象方法
boolean isEmpty()
int size()
T search(T key)//因为元素的类型不确定
boolean add(T x)//?void
T remove(T x)
void clear()
String toString(T set)
Object[] toArray(T set)//因为不知道对象的类型,所以用object
bollean addAll(Set<?extends T>set)//?为泛型通配符,整个语句是说T及其任何一个子类
}
3.四种常见的数据结构
名称 | 特点 |
---|---|
1)线性表 | 可重复的无序集合,按照index排序 |
2)排序线性表 | 可重复的排序集合,按照keyword排序 |
3)散列表 | 不可重复的无序集合,keyword不重复不排序 |
4)二叉排序树 | 不可重复的排序集合,keyword不重复,但是排序 |