数据结构

2019-03-14  本文已影响0人  吃面多放葱

什么是数据结构?

数据结构是相互之间存在一种或多种特定关系的数据元素的集合.

通常有以下四类基本结构:

数据的存储结构:

高级程序语言中的数据类型可以分为两类:
一类是非结构的原子类型. 原子类型的值是不可分解的,例如C语言中的基本类型(整型,实型,字符型,枚举类型)指针类型和空类型.
另一类是结构类型.结构类型的值是由若干成分按某种结构组成的,因此可以分解的,并且它的成分可以是结构的,也可以是非结构的.

算法和算法分析
算法是对特定问题求解步骤的一种描述,他是指令的有限序列,其中每一条指令表示一个或多个操作;此外一个算法还具有下列5个重要特性:

算法的时间复杂度
T(n) = O(f(n))
算法的空间复杂度
S(n) = O(f(n))

线性表

线性表是一个相当灵活的数据结构,它的长度可根据需要增长或缩短,即对线性表的数据元素不仅可以进行访问,还可以进行插入和删除
线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素.
线性表的插入和删除的时间复杂度为O(n)

线性链表 (单链表)

除了存储数据本身信息外,还需存储一个指示其直接后继的信息(即直接后继的存储位置),这种存储映像称作 结点,包含两个域,数据域和指针域

单向循环链表

表中最后一个结点的指针域指向头结点,整个链表形成一个环

双向链表

包含两个指针域,其一指向直接后继,另一指向直接前趋.

双向循环链表 (略)

栈和队列

栈是仅在表尾进行插入和删除操作的线性表,队列是只允许在表的一段进行插入元素,在另一端进行删除元素的线性表
栈 (后进先出)
队列(先进先出)

树和二叉树

树是n个结点的有限集.树的结点包含一个数据元素及若干指向其子树的分支.结点拥有的子树数成为结点的度.
森林是m(m>=0)棵互不相交的树的集合.

遍历二叉树

赫夫曼树

树的带权路径长度为树中所有叶子节点的带权路径长度之和.n个叶子节点分别带权,其中带权路径长度最小的二叉树称作最优二叉树赫夫曼树

二叉排序树

平衡二叉树

它的左子树和右子树都是平衡二叉树,且左子树和右子树的的深度之差的绝对值不超过1.

哈希表

根据设定的哈希函数H(key)和处理冲突的方法将一组关键字映像到一个有限的连续的地址集(区间)上,并以关键字在地址集中的"像"作为记录在表中的存储位置,这种表便称为哈希表,所得存储位置称为哈希地址

哈希函数的构造方法

处理冲突的方法

排序

上一篇 下一篇

猜你喜欢

热点阅读