现在的位置: 首页 > 综合 > 正文

直接能用的数据结构

2017年12月13日 ⁄ 综合 ⁄ 共 625字 ⁄ 字号 评论关闭

本篇算是对集合类的总结。

  常用的数据结构有:数组、链表、栈、队列、树、图。 这些数据结构都可以直接或间接地用 stl、util 中的集合类来表示

数据结构 数组 链表 队列
C++ vector list list list list list
java ArrayList LinkedList LinkedList LinkedList LinkedList LinkedList

  对于 数组、链表、栈、队列 的表示方式应该是没有争议的。树、图用链表来表示的场景如下:

  • 多子树,一个结点有任意个孩子,所有孩子的指针(引用)存在一个链表中。
  • 图,一个点有多个相邻的点,所有邻居的指针(引用)存在一个链表中,拓扑图(偏序图)一般这样表示。

  用集合类来间接表示树、图的好处就是我们添加孩子/邻居更方便了(集合类实现了添加元素的操作),遍历所有孩子/邻居更方便了(通过迭代器或foreach遍历元素)。

  特别地,java 中还隐藏着一棵平衡二叉树
  鉴于TreeMap 是基于红黑树的,所以我们可以新建一个类,其中添加一个 TreeMap 成员变量,然后利用 TreeMap 提供的各种操作实现 search、insert、delele,再注上"Made in XXX",一棵性能优良的平衡二叉树就诞生了!因此,二叉树这种常用的数据结构也不必再造了。

  这些数据结构就像是编程中的鸡毛蒜皮, stl、util 已经把这些都处理好了,我们直接用就是了。有了这些强大的辅助,我们就可以直接应付程序中的业务逻辑了。

抱歉!评论已关闭.