您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法学习笔记第一天--什么是数据结构

2017-04-16 22:26 246 查看

什么是数据结构?

数据结构是一门研究非数值计算的程序设计问题中的**操作对象**,以及它们之间**关系**和**操作**等相关问题的学科。
程序设计 = 数据结构 + 算法
简单的来说,数据结构就是*数据元素相互之间存在的一种或多种特定关系的集合。*

传统上,数据结构分为:
- 逻辑结构:指数据对象中数据元素之间的相互关系(是我们主要的研究重点)。
- 物理结构:指数据的逻辑结构在计算机中的存储方式。

逻辑结构 :

1.集合结构
集合结构中的数据元素除了同属于一个集合外,它们之间没有其它关系。(如:篮子里的水果)

2.线性结构
线性结构中的数据元素之间是一对一的关系。(如:列车一节节的车厢)

3.树形结构
树形结构中的数据元素之间存在一种一对多的层次关系。(如:公司的人员组织结构)

4.图形结构
图形结构的数据元素是多对多的关系。(比如:人与人之间的人际关系)

物理结构:

根据物理结构的定义,我们实际上研究的就是如何把数据元素存储到计算机的存储器中。
存储器主要针对**内存**而言的,像硬盘、光盘、U盘等外部存储器的数据组织通常用*文件结构*来描述的。
数据元素的存储结构形式有两种:**顺序存储**和**链式存储**。

1.顺序存储结构
顺序存储是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。(比如:数组结构)

2.链式存储结构
从顺序结构我们想到了日常生活中的排队,但现实中并非完全如此,比如插队或者中途离开队伍 。
面对时常要变化的结构,使用顺序存储是不科学的,那么就该让链式存储露面了。
链式存储结构是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的也可以是不连续的。(如 :Java中的LinkedList)
很显然,链式 存储结构的数据元素存储关系并不能反映其逻辑关系,因此需要用一个指针来存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置。

补充:
顺序存储和链式存储的比较:
由于顺序存储结构和链式存储结构的特性,决定了:
1.链式存储需要占用更多的空间,因为每一个元素占用的空间除了自身还需要一个指针来记录下一个元素的地址;
2.对于顺序结构而言,因为逻辑结构与物理结构的一致性,所以查找或修改其中的一个元素的性能会优于链式存储,链式存储查找其中的某个元素,因为不知道存储在哪个地址,所以每次都需要从第一个元素开始顺着链路逐个查找下去。
3.而对于链式存储来说,插入元素或删除元素的性能会优于顺序结构,因为只需要修改指针的地址就能够维护元素间的顺序关系;而在顺序结构中插入或删除元素,可能就需要改变大量元素的存储位置。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: