zoukankan      html  css  js  c++  java
  • 数据结构

    定义

    数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法索引技术有关。

    常用数据结构: 

    数组

    特点:查找快O(1),增删慢 

    在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

     

    链表

    特点:增删快,查找慢 O(o)

    是一种物理存储单元上非连续、非顺序的存储结构,它既可以表示线性结构,也可以用于表示非线性结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

     

    是只能在某一端插入和删除的特殊线性表。它按照“先进后出”或“后进先出 ”的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

     

    队列

    一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列是按照“先进先出”或“后进后出”的原则组织数据的。队列中没有元素时,称为空队列。

     

    是包含n(n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足 以下条件:

    (1)有且仅有一个结点 K0,他对于关系N来说没有前驱,称K0为树的根结点。简称为根(root)。 

    (2)除K0外,K中的每个结点,对于关系N来说有且仅有一个前驱。

    (3)K中各结点,对关系N来说可以有m个后继(m>=0)。
     
    注:二叉查找树基于二分查找,对于其中的每个节点,左子节点的值都比它小,而右子节点的值都比它大。并且插入和删除操作的速度也很快。
    还有B树,红黑树,堆,伸展树。 

    图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。

     

    在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。
     

    散列表

    若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表

    散列函数是这样的函数,即无论你给它什么数据,它都还你一个数字。必须是一致的,最好将不同的输入映射到不同的数字。散列函数知道数组有多大,只返回有效的索引。

    (1) 将散列表用于查找  (2)防止重复 (3)将散列表用作缓存 

    如果散列函数发生了冲突,可以在这个位置存储一个链表。

  • 相关阅读:
    MySQL++:Liunx
    MySQL++:liunx 安装 MySQL
    MySQL++:MySQL 相关机制参数解释说明
    linux++:Linux
    linux++:基本操作命令
    coding++:java正则表达式获取指定HTML标签的指定属性值
    mongodb++:mongodb 基本语法
    xml模块
    shelve模块简单用法
    shutil模块
  • 原文地址:https://www.cnblogs.com/pzyin/p/9290948.html
Copyright © 2011-2022 走看看