浅谈各种数据结构

列表,栈,队列,链表,字典,散列,图,二叉查找树

列表

  • 日常生活中:购物清单,待办事项列表等
  • 数据结构较为简单
  • 不需要在一个长序列中查找元素,或者对其进行排序

  • 栈是一种特殊的列表,只能通过列表的一端进行访问,这一端被称为栈顶
  • 餐厅里的盘子叠在一起,从最上面取盘子,洗完也只能放在上面
  • 所以他是先进后出,后入先出的高效数据结构,因为数据只能在栈顶添加或删除,所以操作很快
  • 比如函数调用栈

队列

  • 队列也是一种特殊的列表
  • 只能在队尾添加元素(入队),只能在队头删除元素(出队)
  • 我们在银行排队,排在最前面的人第一个办理业务,然后出去

链表

  • 链表也是一种特殊的列表
  • 每个节点存下个节点的指针
  • 有双向链表,单向链表,循环链表

字典

  • 键值对的存储结构

散列

  • (散列)哈希表是一种常用的数据结构,散列后的数据可以快速插入
  • 在散列表上插入,删除都非常快,但是查找效率非常低
  • 查找一组数组中的最大值和最小值,一般要求助于其他数据结构,比如二叉查找树
  • 即使一个高效的散列函数,也可能将两个键映射为同一个值的可能,这种现象叫碰撞。常见碰撞的处理方法:开链法和线性探测法

  • 图是由边的集合和顶点的集合组成
  • 两个城镇由某种道路相连,每个城镇是一个顶点,道路就是边
  • 顶点也有权重,也叫成本
  • 如果一个图的顶点对是有序的:有向图==流程图
  • 如果无序,就是无序图
  • 搜索图的算法:深度优先搜素和广度优先搜索

二叉树和二叉查找树

  • 树是一种非线性结构,以分层的方式存储数据。
  • 二叉树每个节点的子节点不允许超过两个。
  • 一个父节点的两个子节点分别称为左节点和右节点,通过将子节点的个数限定为 2 个,可以高效插入,查找,删除。
  • 二叉查找树(BST)是一种特殊得二叉树,相对较小的值保存在左节点中,较大的值保存在右节点中。这一特性使得查找的效率很高。