疯狂的小鸡

数据结构概述

字数统计: 546阅读时长: 1 min
2018/10/20 Share

概述

从概念上来说,数据结构大致可以分为表,树,图这么三大类。

线性表它最常用也最简单,就是n个数据元素的有限序列。从逻辑层次上细分的话,可以分为一般线性表和受限线性表。

一般线性表可以对元素进行自由的增删改查。一般有两种实现方式,一种是使用数组,比如ArrayList。一种是链表,比如LinkedList。当然也有一些变体,例如说循环链表、顺序表等。应用的话最常见的就是做容器了。

受限线性表主要包括栈和队列,受限就是指对结点的操作受限制。例如栈是FILO的, 出栈操作就是返回栈顶元素,而不能指定返回元素。队列就是FIFO的,出队就是出队头的元素。当然也不是绝对,比如双向队列什么的。两者都可以使用数组或链表实现。

栈的应用的话有函数调用和返回, 表达式求值,走迷宫等等。 队列的话比如说实现消息模式,进程调度之类的。

散列表是普通数组概念的推广。由于对普通数组可以直接寻址,使得能在O(1)时间内访问数组中的任意位置。在散列表中,不是直接把关键字作为数组的下标,而是根据关键字计算出相应的下标。例如JAVA中的MAP。

树的话,种类很多,不是很好分类。大致能分为二叉树、B树、堆、字典树Trie,二叉树比较常用的有 二叉查找树,红黑树,AVL树。 B树系列有B,B+,B*。堆分二叉堆,二项堆,斐波那契堆等。实际应用中主要使用二叉堆。

然后是图,主要是做一些地图寻路啊,社交网络啊,任务调度之类的功能,分类的话大致可通过图是否有向,是否加权,是否完全等属性来划分。

大纲

CATALOG
  1. 1. 概述
  2. 2. 大纲