- 0
- 0
- 约9.55千字
- 约 13页
- 2026-02-17 发布于山东
- 举报
数据结构知识点
第一部分数据结构基础概念
1.1数据结构的定义与核心要素
①定义:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,它研究的是数据的逻辑结构、物理结构以及施加在数据上的操作,目的是提高数据处理的效率(时间效率和空间效率)。
②核心三要素:
-逻辑结构:数据元素之间的逻辑关系(与存储无关),分为线性结构和非线性结构;
-物理结构(存储结构):数据元素及其关系在计算机内存中的存储方式,分为顺序存储和链式存储;
-数据操作:对数据施加的增、删、改、查等操作,操作的实现依赖于存储结构。
1.2逻辑结构分类
①线性结构:数据元素之间存在“一对一”的线性关系,有唯一的首元素和尾元素,除首尾外每个元素有唯一前驱和后继(例:数组、链表、栈、队列);
②非线性结构:数据元素之间存在“一对多”或“多对多”的关系(例:树、图、集合)。
1.3物理结构分类
①顺序存储结构:将数据元素连续存储在一片连续的内存空间中,元素的存储地址是连续的,可通过下标直接访问(例:数组);
优点:存储密度高,随机访问速度快;缺点:插入、删除操作效率低(需移动大量元素),存储空间固定不易扩展。
②链式存储结构:将数据元素(结点)分散存储在内存中,每个结点包含数据域和指针域(存储后续结点的地址),通过指针连接形成逻辑关系(例:链表);
优点:插入、删除操作效率高(只需修改指针),存储空间可动态扩展;缺点:存储密度低(需额外存储指针),只能顺序访问(不能随机访问)。
1.4时间复杂度与空间复杂度
①算法效率评价指标:时间复杂度(衡量算法执行时间的长短)和空间复杂度(衡量算法占用内存空间的大小),均采用“大O记法”表示(忽略常数项和低次项,关注最高次项)。
②时间复杂度:
-定义:算法执行过程中基本操作的执行次数(与问题规模n的关系);
-常见复杂度(从优到劣):O(1)(常数阶)O(log?n)(对数阶)O(n)(线性阶)O(nlog?n)(线性对数阶)O(n2)(平方阶)O(n3)(立方阶)O(2?)(指数阶);
-示例:顺序查找的时间复杂度为O(n),二分查找为O(log?n),冒泡排序为O(n2)。
③空间复杂度:
-定义:算法执行过程中所需的额外存储空间(与问题规模n的关系);
-示例:递归算法的空间复杂度通常为O(n)(递归栈占用),顺序存储的数组空间复杂度为O(1)(额外空间固定)。
第二部分线性表
2.1线性表的定义与基本操作
①定义:由n(n≥0)个具有相同类型的数据元素组成的线性结构,n=0时称为空表,n≥1时元素之间呈“一对一”关系。
②基本操作:初始化(创建空表)、插入(在指定位置插入元素)、删除(删除指定位置元素)、查找(查找指定元素的位置或值)、遍历(依次访问所有元素)、销毁(释放表占用的空间)。
2.2顺序表(顺序存储的线性表)
①定义:用一段连续的内存空间存储线性表的元素,元素的物理顺序与逻辑顺序一致,通常用数组实现。
②核心操作实现:
-插入操作:若插入位置为i(从0或1开始),需将第i个及之后的元素向后移动1位,再插入新元素,时间复杂度O(n);
-删除操作:若删除位置为i,需将第i+1个及之后的元素向前移动1位,时间复杂度O(n);
-查找操作:按值查找需遍历元素,时间复杂度O(n);按下标查找可直接访问,时间复杂度O(1)。
2.3链表(链式存储的线性表)
①定义:每个元素(结点)包含数据域(存储数据)和指针域(存储后续结点地址),结点通过指针连接形成线性表,分为单链表、双向链表、循环链表。
②单链表(核心):
-结构:头指针(指向首结点)、首结点(第一个元素)、尾结点(最后一个元素,指针域为NULL);空表时头指针为NULL;
-核心操作实现:
插入操作:在指定结点后插入新结点,只需修改指针(无需移动元素),时间复杂度O(1)(已知插入位置)或O(n)(未知位置需遍历);
删除操作:删除指定结点,需找到其前驱结点并修改指针,时间复杂度O(1)(已知前驱)或O(n)(未知前驱需遍历);
遍历操作:从首结点开始,沿指针依次访问,时间复杂度O(n)。
③双向链表:每个结点有两个指针域(前驱指针和后继指针),可双向遍历,插入、删除操作需同时修改两个指针,效率略高于单链表。
④循环链表:尾结点的指针域指向首结点(单循环)或头指针(双向循环),可解决单链表尾结点访问不便的问题,遍历可从任意结点开始。
2.4顺序表与链表的对比
①访问效率:顺序表O(1)(随机访问)链表O(n)(顺序访问);
②插入删除效率:链表O(1)(已知位置)顺序表O(n)(需移动元素);
③存储空间:顺序表固定(易浪费或溢出),链表动态
原创力文档

文档评论(0)