一、数据结构

数据结构可以分为如下几种:

1、线性表

线性表存储的数据是依次排列的,具有一对一的相连方式。每个元素的左右两边都具有小于或等于1个相邻节点。

线性表从存储方式来说,分为顺序存储和链式存储。

1)顺序存储结构

具有顺序存储结构的线性表又叫顺序表。顺序表相邻(逻辑地址相邻)的两个节点,在内存中具有相邻的物理地址。比如数组(C++中使用 int arr[10]、STL中的vector)

数组和STL中的vector都是顺序存储容器。区别是数组是静态分配内存的,在定义时就已经确认好大小;而vector具有自己的扩容机制,只要内存够用可以不断push进数据。

由于vector是顺序存储结构,所以如果发生了扩容,需要重新申请一块更大的连续内存空间,并将原数据复制过去,所以存储地址有可能发生变化。

2)链式存储结构

具有链式存储结构的线性表又叫链表。链表相邻(逻辑地址相邻)的两个节点,在内存中的物理地址不一定相同。

STL中的 list 就是双向链表结构

3)栈和队列

栈和队列是特殊的线性表,因为他们对数据的进出顺序做出了明确的要求。

:进入栈的数据要符合先入后出的原则。见如下栈结构,A、B、C依次入栈,则弹出顺序为C、B、A

 STL中具有栈的容器类型 stack

队列: 进入队列的数据要符合先入先出的原则。见如下队列结构,A、B、C依次进队列,则出队列顺序为:A、B、C

STL中具有栈的容器类型 queue

2、树结构

树是具有1对多的对应关系的数据存储结构。如下图所示是我们比较常用的二叉树结构,二叉树具有1对2的对应关系

STL中没有树的容器,但是我们可以简单实现一个树节点,下面是一个二叉树的节点

template<typename T>
struct TreeNode
{T data;        //数据TreeNode* left;    //指向左孩子节点的指针TreeNode* right;   //指向右孩子节点的指针TreeNode(T dat, TreeNode* lft = nullptr, TreeNode* rig = nullptr):data(dat), left(lft), right(rig) {}
};

3、图结构

树是具有多对多的对应关系的数据存储结构。

STL中没有图的容器

推荐下面的文章学习图结构

图——C++实现_Mind_V的博客-CSDN博客_图c++https://blog.csdn.net/mind_v/article/details/75941252

C++几种常见的数据结构相关推荐

  1. 【算法】图文并茂,一文了解 8 种常见的数据结构

    百度百科对数据结构的定义是:相互之间存在一种或多种特定关系的数据元素的集合.定义很抽象,需要大声地朗读几遍,才有点感觉.怎么让这种感觉来得更强烈,更亲切一些呢?我来列举一下常见的 8 种数据结构,数组 ...

  2. redis五种常见的数据结构

    文章目录 概述 一.对象的类型和编码 二.五种数据结构 五种数据结构的底层实现结构 1.字符串(String) 1)int 编码 2)embstr 编码 3)raw 编码 2.列表(List) 1)z ...

  3. 几种常见树形数据结构小结

    最近新学习了很多厉害的数据结构,在大佬们的熏陶之下,也感悟了很多,对大佬们的实力也有了更加深厚的了解(先膜一番orz,换个姿势zto,再来一次owz) 左偏树 左偏树又名可并堆,多被用来对一些需要合并 ...

  4. 面试中常见的数据结构

    上次在面试时被面试官问到学了哪些数据结构,那时简单答了栈.队列/(ㄒoㄒ)/~~其它就都想不起来了,今天有空整理了一下几种常见的数据结构,原来我们学过的数据结构有这么多~ 首先,先来回顾下C语言中常见 ...

  5. 数据结构和算法练习网站_视频和练习介绍了10种常见数据结构

    数据结构和算法练习网站 "Bad programmers worry about the code. Good programmers worry about data structures ...

  6. java八种基础数据结构_8种常见数据结构及其Javascript实现

    摘要: 面试常问的知识点啊... Fundebug经授权转载,版权归原作者所有. 做前端的同学不少都是自学成才或者半路出家,计算机基础的知识比较薄弱,尤其是数据结构和算法这块,所以今天整理了一下常见的 ...

  7. JavaScript 数组拼接打印_8种常见数据结构及其Javascript实现

    摘要: 面试常问的知识点啊- 原文:常见数据结构和Javascript实现总结 作者:MudOnTire Fundebug经授权转载,版权归原作者所有. 做前端的同学不少都是自学成才或者半路出家,计算 ...

  8. Javascript中的8种常见数据结构(建议收藏)

    1.Stack(栈) 堆栈遵循LIFO(后进先出)的原则.如果你把书堆叠起来,上面的书会比下面的书先拿.或者当你在网上浏览时,后退按钮会引导你到最近浏览的页面. Stack具有以下常见方法: push ...

  9. 【数据结构】549- 8种常见数据结构(JS实现)

    来源 | https://segmentfault.com/a/1190000020011987 本文代码较多,建议PC阅读~ 做前端的同学不少都是自学成才或者半路出家,计算机基础的知识比较薄弱,尤其 ...

最新文章

  1. init-connect mysql_MySQL利用init-connect增加访问审计功能异常
  2. eclipse 向HDFS中创建文件夹报错 permission denied
  3. 八皇后算法python_Python学习二(生成器和八皇后算法)
  4. 快手-中科大最新研究:利用对话式推荐解决用户冷启动问题
  5. 内存中原码,反码,补码,查看数值范围,,或,异或,取反,左右移位操作
  6. python中execute函数_Python中的函数定义与参数使用
  7. java mail 设置参数
  8. 【图精】徐克镜头里的十大美人
  9. 初学python之路-day15
  10. myisam为什么比innodb查询快_mysql存储引擎之MyISAM 和 InnoDB的比较
  11. 10 JavaScript函数
  12. Ubuntu安装显卡驱动
  13. 应用程序无法正常启动(0xc0150002)
  14. 数理经济模型(1)---蒙特卡洛仿真Monte Carlo Simulation
  15. OAuth2:资源服务器
  16. java中汉语转化成拼音的使用详解
  17. 2018-PAT春季考试小结
  18. UE4编辑器修改界面显示语言
  19. GTK槽回调函数,组件颜色,布局控件
  20. calendar java起始于结束时间,java获取一天的开始时间和一天的结束时间

热门文章

  1. 二叉搜索树,二叉平衡术,红黑树,B树,B+树
  2. VS2019 特别慢_慢囤句:25句简短俏皮可爱的秋天句子,热爱生活的你,读过多少?...
  3. 定时给ta讲笑话python3.x
  4. 单键四档调色手电筒方案
  5. python,路径拼接,字符串拼接,os.path.join()函数怎么用?
  6. MySQL员工部门查询
  7. 【项目一】基于Qt平台的交互式输入与输出窗口
  8. UEFI BIOS启动过程
  9. 前台Autoform 选择下拉框的值进行判断(js)
  10. re学习笔记(59)BUUCTF - re - [ACTF新生赛2020]Oruga