IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构与算法(二):数据结构基础 -> 正文阅读

[数据结构与算法]数据结构与算法(二):数据结构基础

1、数组
数组的英文是array,是有限个相同类型的变量所组成的有序集合,数组中的每个变量都被成为元素,一旦创建,数组的长度是固定的,不能更改。数组是最简单、最常用的数据结构。
在这里插入图片描述

**特点:**在内存中顺序存储,可以很好的实现逻辑上的顺序表,元素之间紧密排列,既不能打乱元素的存储顺序,也不能跳过某个存储单元进行存储
**数组的基本操作:**读取元素、更新元素、插入元素、删除元素
**数组的优势和劣势:**高效随机访问,只要给出下标,就可以用常量时间找到元素。二分查找就是利用了数组的这个特性。但是在插入和删除元素时,都会导致大量元素被迫移动,影响效率。所以,数组适合的是读操作多,写操作少的场景。

2、链表
链表是一种在物理上非连续、非顺序的数据结构,由若干节点所组成。链表与数组是相反的,灵活隐秘的传递着信息。
**单向链表:**每个节点包含两部分,一部分是存放数据的变量data,另一部分是指向下一个节点的指针next。最后一个指针指向null。
在这里插入图片描述
双向链表:除了每个节点拥有data和next指针,还有指向前置节点的prev指针。
在这里插入图片描述
链表的基本操作:查找节点、更新节点、插入节点、删除节点
链表中的数据只能按顺序进行访问,查找最坏的时间复杂度是O(n).如果不考虑查找的过程,更新节点会像数组一样简单,直接更新即可。如果不考虑插入、删除操作之前的查找元素的过程,纯粹的插入和删除操作,时间复杂度是O(1)。
链表和数组都属于线性的数据结构,但是链表在插入和删除操作更灵活。

3、栈和队列
在这里插入图片描述

栈和队列是一种线性逻辑结构,可以用数组实现,也可以用链表实现,栈包含入栈和出栈操作,遵循先入后出的原则(FILO)。队列包含入队和出队操作,遵循先入先出的原则(FIFO).时间复杂度都是O(1).
注意:队列的循环。当出队一些元素后,在不扩充数组的情况下,利用已出队元素留下的空间,让队尾指针重新指向数组的首位。
栈和队列的应用:
栈可以实现回溯,例如递归的逻辑,也可以用来做面包屑导航,用户在浏览页面时可以轻松回溯到上一级或更上一级页面。
队列的输出和输入顺序相同,所以队列通常用于对“历史”的回放。比如在网络爬虫实现网站抓取时,也是把待抓取的网站URL存入队列中,再按存入队列的顺序一次抓取和解析。
扩展:双端队列(既可以先进先出,也可以后进后出),优先队列(谁的优先级最高,谁先出队,是基于二叉堆实现的)

4、散列表
散列表又叫哈希表,是存储Key-Value映射的集合。对于某一个Key,散列表可以在接近O(1)的时间内进行读写操作,散列表通过哈希函数实现KEY和数组下标的转换(哈希表本质也是数组,数组是根据下标查找,而Key是以字符串类型为主的),通过开放寻址法和链表法来解决哈希冲突(哈希冲突是指数组长度是有限的,当插入的元素越多时,不同的key通过哈希函数获得的下标有可能是一样的)。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:44:00  更:2021-07-13 17:44:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 18:00:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码