数据结构篇01
一.数据结构
- "数据结构"是计算机学科的一门重要课程,更是操作系统、数据库系统等系统程序的基础。
- 包括考研,大厂面试等很多地方都对“数据结构”提出了要求。
- “数据结构”是一门综合性的课程,是介于数学,计算机硬件,计算机软件之间的核心课程。
二.数据结构概念
- 数据:
描述客观事物的符号,信息的载体。
对于计算机来说,数据是需要可以输入到计算机里面,并且能被计算机程序处理的符号。- 数据元素:
数据的基本单位,通常一个数据元素可以由多个数据项组成。
- 数据结构:
是互相之间存在着一种或多种关系的数据元素的集合。
- 基本操作:
插入,删除,修改,查找,排序....
- 逻辑结构:
是数据元素之间的逻辑关系。
- 物理结构(存储结构):
是数据的逻辑结构在计算机中的存储形式,是逻辑结构在计算机中的实现。数据的存储结构是要能够反映元素之间的逻辑关系。
- 数据项:
数据元素的最小组成单位。
数据结构:是由逻辑结构,物理结构,运算三部分组成。
三.逻辑结构
两个要素:数据元素集合,关系的集合。
线性结构:
线性结构
非线性结构:
集合结构,树形结构,图形结构.1. 集合结构
数据元素都在同一个集合底下,集合内部的元素关系松散。
2. 线性结构
数据元素之间存在着一对一的关系。
3. 树形结构
数据元素之间存在着一对多的关系,其也称作层次结构。
4. 图形结构
数据元素之间存在着多对多的关系,其也称作网状结构。
四.存储结构
1. 顺序存储结构(顺序表)
顺序存储结构是把数据元素存放在地址连续的存储单元中,数据元素之间的逻辑关系和物理位置一致。顺序存储结构是一种最基础的存储表示方法,而数组就是用的顺序存储结构如:
int a[5];
。按顺序a[0]放在第一个位置,a[1]紧随其后,以此类推…2. 链式存储结构(链表)
链式存储结构是把数据元素存放在随机任意的存储单元中,因此存放数据的存储单元大概率是不连续的。所以需要给每一个数据元素设置一个指针,用来存放下一个数据元素的位置。
线性结构的存储结构:
链式结构中由一个数据元素设置了一个指针指向了下一个数据元素的存储地址
头指针:
指向第一个数据元素的指针。
五.运算
⑴ 建立(Create)一个数据结构;
⑵ 消除(Destroy)一个数据结构;
⑶ 从一个数据结构中删除(Delete)一个数据元素;
⑷ 把一个数据元素插入(Insert)到一个数据结构中;
⑸ 对一个数据结构进行访问(Access);
⑹ 对一个数据结构(中的数据元素)进行修改(Modify);
⑺ 对一个数据结构进行排序(Sort);
⑻ 对一个数据结构进行查找(Search)。
六.抽象数据类型
- 数据类型:
是一个值的集合和定义在这个值集上的一组操作的总称。
- 抽象数据类型:
(Abstract Data Type)ADT是指一个数学模型以及定义在此数学模型上的一组操作。
- 实现方法:
封装法,分散法,半封装法
封装法:将ADT中定义的数据及其操作封装成为整体,一个ADT对应一个类。
分散法:将数据和处理数据的函数各自分开。
半封装法:将ADT中的数据和为处理数据需要而定义的相关变量封装再一起形成一个结构,相关函数定义在函数外面。
常见的数据结构:
名称 | 特点 | 存储结构 |
---|---|---|
线性表 | 数据元素是一对一的关系 | 顺序/链式存储结构 |
栈 | 插入、删除操作在一端进行,先进先出 | 顺序/链式栈 |
队列 | 插入操作在一端进行,删除操作在另一端进行,后进先出 | 顺序/链/循环队列 |
串 | 数据元素是字符的线性表,操作对象是数据元素的序列 | 顺序/块链/堆存储串 |
数组 | 数据元素可以是一个表 | 行为主序或列为主序的顺序存储。特殊矩阵的压缩存储。稀疏矩阵的三元组表存储,十字链表存储 |
广义表 | 数据元素可以是一个表也可以是一个元素 | 链式存储 |
树 | 数据元素之间的关系是一对多,有清晰的层析关系 | 双亲表示法,孩子表示法,孩子链表表示法,孩子兄弟表示法 |
二叉树 | 在树的基础上要求每个结点最多有两个孩子结点且有序 | 顺序/二叉链表/三叉链表存储结构 |
图 | 数据元素之间存在多对多的关系,也叫网状结构 | 邻接矩阵,邻接表,十字链表,多重邻接表 |
例题:
(1).从逻辑结构上可以把数据结构分为( )两大类?
A.顺序结构,链式结构 B.线性结构,非线性结构
答案:A从逻辑结构上划分为顺序结构,链式结构,从存储结构划分为线性结构,非线性结构