常见的数据结构

本文介绍了数组、链表两种基本数据结构,强调了它们在查询、插入和删除操作上的时间复杂度差异。数组适合快速访问,但插入和删除操作较慢;链表则在插入和删除上更高效,但查询可能需要线性时间。此外,还提及了栈的先进后出特性以及队列的基本概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、数组

数组是一个存储地址连续的有序集合。

按照下标查询的时间复杂度是O(1),从指定下标处直接取出来数据就行,就遍历一个元素。

插入和删除的时间复杂度为O(n),插入的时候比如在3和4中间插入一个元素,插入进去之后,需要把之前的元素4的索引变为5,后面的所有元素索引都需要变化。

删除的时间复杂度为O(n),删除一个元素之后,后面的所有元素都要前移一位。

其中的n可以理解为数组的长度。

2、链表

链表是一个存储地址不连续的有序集合,每一个节点分为引用地址和数据两部分,

插入数据的时间复杂度是O(n),需要从头部开始遍历,中间插入是把前一个元素的引用指向插入的这个元素A,元素A把引用指向下一个元素。

删除的时间复杂度是O(1),头部删除直接把元素的引用地址置为null,中间删除直接把需要删除元素的钱前一个元素的引用指向下一个元素;尾部删除即把倒数第二个元素的引用地址置为null。

3、栈

先进后出 

4、队列

5、哈希

6、图(graph)

图是一些元素以及边的集合,图的顶点具有相对概念,没有具体的顶点。

通常图用(V,E)来表示。V=(V0,V1,V2,V3,V4),E={}

 

7、堆

8、树

待完善。。。

自己写的,不足之处请多多指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值