数据结构与算法学习笔记第一天--什么是数据结构
来源:互联网 发布:跳跃网络300tank是什么 编辑:程序博客网 时间:2024/06/06 02:02
什么是数据结构?
数据结构是一门研究非数值计算的程序设计问题中的**操作对象**,以及它们之间**关系**和**操作**等相关问题的学科。程序设计 = 数据结构 + 算法简单的来说,数据结构就是*数据元素相互之间存在的一种或多种特定关系的集合。*
传统上,数据结构分为:
- 逻辑结构:指数据对象中数据元素之间的相互关系(是我们主要的研究重点)。
- 物理结构:指数据的逻辑结构在计算机中的存储方式。
逻辑结构 :
1.集合结构
集合结构中的数据元素除了同属于一个集合外,它们之间没有其它关系。(如:篮子里的水果)
2.线性结构
线性结构中的数据元素之间是一对一的关系。(如:列车一节节的车厢)
3.树形结构
树形结构中的数据元素之间存在一种一对多的层次关系。(如:公司的人员组织结构)
4.图形结构
图形结构的数据元素是多对多的关系。(比如:人与人之间的人际关系)
物理结构:
根据物理结构的定义,我们实际上研究的就是如何把数据元素存储到计算机的存储器中。 存储器主要针对**内存**而言的,像硬盘、光盘、U盘等外部存储器的数据组织通常用*文件结构*来描述的。 数据元素的存储结构形式有两种:**顺序存储**和**链式存储**。
1.顺序存储结构
顺序存储是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。(比如:数组结构)
2.链式存储结构
从顺序结构我们想到了日常生活中的排队,但现实中并非完全如此,比如插队或者中途离开队伍 。
面对时常要变化的结构,使用顺序存储是不科学的,那么就该让链式存储露面了。
链式存储结构是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的也可以是不连续的。(如 :Java中的LinkedList)
很显然,链式 存储结构的数据元素存储关系并不能反映其逻辑关系,因此需要用一个指针来存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置。
补充:
顺序存储和链式存储的比较:
由于顺序存储结构和链式存储结构的特性,决定了:
1.链式存储需要占用更多的空间,因为每一个元素占用的空间除了自身还需要一个指针来记录下一个元素的地址;
2.对于顺序结构而言,因为逻辑结构与物理结构的一致性,所以查找或修改其中的一个元素的性能会优于链式存储,链式存储查找其中的某个元素,因为不知道存储在哪个地址,所以每次都需要从第一个元素开始顺着链路逐个查找下去。
3.而对于链式存储来说,插入元素或删除元素的性能会优于顺序结构,因为只需要修改指针的地址就能够维护元素间的顺序关系;而在顺序结构中插入或删除元素,可能就需要改变大量元素的存储位置。
- 数据结构与算法学习笔记第一天--什么是数据结构
- 学习数据结构与算法 第一天
- 数据结构与算法学习笔记第二天--什么是算法
- 数据结构与算法(第一天)
- 数据结构与算法学习笔记之--数据结构
- 数据结构和算法 ---第一天
- 学习笔记:第8章 数据结构与算法
- 数据结构与算法学习笔记
- 数据结构与算法学习笔记
- 数据结构与算法学习笔记
- 算法 与 数据结构 学习笔记
- 算法与数据结构学习笔记
- 数据结构与算法分析 java篇 第一天
- 数据结构笔记-----数据结构与算法
- 【算法零基础入门】 学习笔记一 什么是数据结构
- 什么是算法-数据结构学习笔记1.2(基本概念)
- 数据结构学习笔记01--数据结构与算法介绍
- 《数据结构与算法》学习笔记1 java数据结构基本知识
- 阿里巴巴java开发手册一方库、二方库、三方库都是什么
- Ubuntu常用快捷键
- WebSocket之解析数据帧
- 题目1091:棋盘游戏
- 效率(3)PPT
- 数据结构与算法学习笔记第一天--什么是数据结构
- 前端学习笔记
- 邮件发送(一)
- appium与自动化测试(三) 一个基于python的appium例子
- #tensorflow学习笔记#tf.gather
- BZOJ 3626 [LNOI2014]LCA
- 借助Stetho在Chrome上调试Android网络、数据库、Sharedpreferences
- 算法竞赛-走迷宫
- 为什么要自建量化交易平台?