当前位置: 首页 > news >正文

基本数据结构简记

简单记录一下常见的一些数据结构的概念,不包含树和图。

一、线性数据结构

1、主要成员(或形式)

栈,队列,双端队列,列表

2、特点

有两端

区分方式:元素添加与移除方式

二、栈

1、特点

添加与移除总发生在同一端

排序原则:后进先出(LIFO)

2、补充

栈不能用于查找

程序内存分区中的堆栈概念与算法中堆栈概念不同,算法中的堆式一种特殊的二叉树,具体概念不在此处记录

三、队列

1、特点

添加操作在尾部,移除操作在头部

排序原则:先进先出(FIFO)

2、双端队列

在哪一端添加或移除无限制

排序原则,无要求,取决于使用者

3、优先级队列

优先级队列从头部移除元素,不过元素的逻辑顺序是由优先级决定的。优先级最高的元素在最前,优先级最低的元素在最后。

四、列表(链表)

1、特点

每一个元素都有一个相对于其他元素的位置

数组的线性顺序是由数组下标决定的,链表的顺序是由各个对象里的位置指向决定的

链表可分:单链接双链接,已排序未排序,循环非循环

2、单链接与双链接

单链接链表只有后向链接,双链接链表有前向与后向两个链接

3、已排序未排序

已排序链表, 链表的线性顺序与链表元素中关键字的线性顺序一致,未排序链表, 元素可以以任何顺序出现

4、循环非循环


循环链表,表头元素的 prev 指针指向表尾元素,而表尾元素的 next 指针则指向表头元素,形成一个圆环

五、数组与集合

1、数组

数组是计算机科学中最基本的数据结构之一。如果你用过数组,那么应该知道它就是一个含有数据的列表。 此外,我们会用一些名为索引的数字来标识每项数据在数组中的位置

2、集合


集合。它是一种不允许元素重复的数据结构 其实集合是有不同形式的,但现在我们只讨论基于数组的那种。这种集合跟数组差不多,都是一个普通的元素列表,唯一的区别在于,集合不允许插入重复的值。

六、散列表(hashtable 哈希表)

1、概念

普通数组概念的推广, 是实现字典操作的一种有效数据结构, 也被称为散列映射、映射、字典和关联数组

一种包含额外逻辑的数据结构

数组和链表都被直接映射到内存,但散列表更复杂,它使用散列函数来确定元素的存储位置

2、散列函数

散列函数是构造散列表的关键,一般来说,散列函数应该有以下特点

一致性 同样的输入返回的结果是一致的,同样的,不同的输入返回的结果一般也不同(按我的理解可以相同,但这样的散列表没有意义)

有效性 散列函数只返回有效结果(不会有返回超出散列表范围的数据发生)

3、字典

字典是由一些关键字与对应的值组成的数值对进一步组成的集合,除非是多重字典,字典中任意两个数值对,关键字都不等

散列表很方便的实现了字典,但字典不是只能用散列表实现,还可以使用线性表和跳表的方法实现

跳表是一种扩充了额外(向前)指针的链表,本文暂不记录


http://www.mrgr.cn/news/39353.html

相关文章:

  • 在Python中实现多目标优化问题(2)
  • Springboot中基于注解实现公共字段自动填充
  • 第十一章 【前端】调用接口(11.1)——Vite 环境变量
  • 微商伙伴软件功能介绍
  • spring简短注入
  • 通信工程学习:什么是OFDM正交频分复用
  • 再次重逢,愿遍地繁花
  • 【C++】AVL树
  • P10483 小猫爬山
  • 深度估计任务中的有监督和无监督训练
  • 微信功能限制带来的创业机会案例分享
  • vue admin 若依框架 解决无权限时进入死循环的问题 auths
  • C++的6种构造函数
  • 前缀和(6)_和可被k整除的子数组_蓝桥杯
  • cloud-(Nacos)--注册中心原理-服务注册-服务发现
  • HTB:Three[WriteUP]
  • 如何使用 git 克隆特定 tag 的代码 ?
  • 招联金融内推-2025校招
  • 每日1题-7
  • 自动化测试常见的面试题(超详细整理)