数据结构速成之结构分类

118 阅读2分钟

概述

本篇文章将讨论数据结构分类,其中带有题主个人见解。

结构分类

  • 线性数据结构:数组、链表、栈、队列、哈希表,元素之间是一对一的顺序关系。
  • 非线性数据结构
    • 树形结构:树、堆、哈希表,元素之间是一对多的关系。
    • 网状结构:图,元素之间是多对多的关系。

如何理解一对一一对多多对多

想要理解这两个概念就要知道知道世界上事物之间的关系。
想象一下在生活中你刚进入小学,老师会给你分配一张桌子,一个凳子。在我读书时还会填写一张表像下面这样:
image.png
其实这里面就涉及到各种关系,比如学生和课桌、凳子属于一对多关系,因为课桌和凳子都属于学生。而姓名和性别属于一对一关系,因为一个人只能是一种性别。这里就引出了线性数据最重要的概念元素一一对应。所以为了表示现实世界各种事物的关系人们就总结了三种关系。

  1. 一对一:元素一一对应,数组中表示是元素下标对应元素、链表是一个地址对应一个数据、哈希表是一个键对应一个值;
  2. 一对多:元素一个对应多个,树结构中表示是一个节点对应多个子节点、哈希表是一个键对应多个值;
  3. 多对多:元素有独立的对应关系,图结构中表示为一个节点可以随意对应其他节点,其他节点也可以随意对应其他节点;

也许你会问为什么没有多对一?那是因为多对一不就是一对多吗?两者只是顺序区别罢了。

总结

在接下来在本专栏中我将使用cpp实现以上数据结构。如果喜欢请继续看下去吧!任何疑问均可留下评论或使用掘金联系题主

启发自: Hello 算法-数据结构分类