数据结构:数据结构基础、顺序表、链表

Algorithms + Data Structures = Programs

------尼克劳斯·维尔特(Niklaus Wirth)


目录

1.数据结构概念

二、顺序表

三、链式表(linklist)【重点,应用非常多】


1.数据结构概念

1.概念:

程序 == 数据结构 +算法

数据结构 :程序操作数据对象的结构,是数据元素的集合,这些元素之间存在某种关系。

算法:是程席操作数据对象的方法,是解决特定问题的一系列步骤

意义:程序的设计和实现都围绕着这两个核心组件展开。选择合适的数据结构可以优化算法的执行,提高程序的整体效率。

2.程序的效率的衡量指标

时间复杂度: 数据量增长与程序运行时间增长呈现的比例函数关系称为时间复杂度函数,简称为时间复杂度

O(c)

O(logn)

O(n)

O(nlogn)

O(n^2)

O(n^3)

...

0(2^n)

空间复杂度:数据量增长与程序空间增长呈现的比例函数关系称为空间复杂度

3.数据结构

1.逻辑结构

线性结构:一对一关系

树形结构:一对多关系

图形结构:多对多关系

2.存储结构

顺序存储:

优点------访问元素方便

缺点------插入数据不便,删除数据效率也低,无法利用小空间

链式存储

优点------①插入、删除效率高

②可以利用小空间

缺点------访问元素不方便

增加额外空间的开销

索引存储

散列存储

3.具体常用数据结构类型分类

顺序表(Contiguous List)

链式表【重点,应用非常多】

顺序栈

链式栈

顺序队列(就是排队)

链式队列

二叉树(完全二叉树、满二叉树)

哈希表

常见排序和查找算法

二、顺序表

概念:本质上是数组(动态数组),只不过存于堆区(通过申请堆区空间存储数据,通过首地址完成对所有空间的访问)

申请

释放

调用

makefile

三、链式表(linklist)【重点,应用非常多】

1,简介

概念 :链表是一种牺牲随机存取性能以换取动态性和插入/删除效率的数据结构,适用于频繁增删、数据规模不确定的场景,但需注意其空间开销和顺序访问的限制。

主要缺点

失去随机存取能力:无法像数组一样通过索引直接访问元素。

空间开销较大:每个结点需额外存储指针,占用更多内存。

访问效率较低:查找特定结点需遍历链表。

2.3种分类

单向链表(分有头链表和无头链表)

注意:无头链表插入数据较麻烦(会使用二级指针),所以学习有头链表

双向链表

双向循环链表【应用最多,内核里使用。如freertos操作系统】

3.单向链表(链表最后一个节点的指针数据pnext永远为空(∵链表是前一个节点指向下一个节点,最后一个节点的下一个节点没有,所以它存的下一个节点的地址为空))

函数①------空结点创建:

分析


申请

调用

函数②------节点后插函数(作用:在某个节点*pHead的后边插入一个节点,并存储数据TmpData)

分析

四步:①申请新节点空间

②存放数据到新节点的Data

③将pHead节点的pNext值赋值给新节点pNext

④将新节点的pNext赋给pHead的节点


代码

函数③------链表元素的访问函数(两种方法)

分析:以下两种方法都能实现

p为当前节点首地址,左边的思路,可以遍历所有元素,但是无法得到最后一个元素(除非再遍历一遍),比较麻烦; 右边的思路,指针一指向最后一个元素就停下来了,想要对最后一个元素读取需在while外边再操作一行


代码

调用

结果

函数④------链表元素的删除

分析:

代码

调用

结果

函数⑤------链表元素的替换

分析:遍历所有节点,当节点数据为需要修改的数据时,将其改为新数据
代码

调用

结果

函数⑥------链表的释放

分析:定义两个指针指向链表头

代码

可通过valgrind检查

相关推荐
海清河晏1111 小时前
数据结构 | 单循环链表
数据结构·算法·链表
沫璃染墨6 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
skywalker_116 小时前
力扣hot100-3(最长连续序列),4(移动零)
数据结构·算法·leetcode
_日拱一卒7 小时前
LeetCode:除了自身以外数组的乘积
数据结构·算法·leetcode
计算机安禾7 小时前
【数据结构与算法】第36篇:排序大总结:稳定性、时间复杂度与适用场景
c语言·数据结构·c++·算法·链表·线性回归·visual studio
计算机安禾7 小时前
【数据结构与算法】第35篇:归并排序与基数排序
c语言·数据结构·vscode·算法·排序算法·哈希算法·visual studio
专注API从业者7 小时前
淘宝商品详情 API 与爬虫技术的边界:合法接入与反爬策略的技术博弈
大数据·数据结构·数据库·爬虫
汀、人工智能8 小时前
[特殊字符] 第66课:跳跃游戏
数据结构·算法·数据库架构·图论·bfs·跳跃游戏
汀、人工智能8 小时前
[特殊字符] 第70课:加油站
数据结构·算法·数据库架构·图论·bfs·加油站
favour_you___8 小时前
2026_4_8算法练习题
数据结构·c++·算法