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

    在计算机科学中,数据结构英语:data structure)是计算机中存储、组织数据的方式。数据结构意味着接口或封装:一个数据结构可被视为两个函数之间的接口,或者是由数据类型联合组成的存储内容的访问方法封装。-- "维基百科"

    1. 链表 

        链表是一种非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的;链表由一系列节点组成,每个节点包含存储数据元素的数据域和存储下一节点地址的指针域。由于不必按顺序存储,链表在插入元素时可以达到O(1),但在查找某一元素时为O(n);
        使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理;但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大;
        单向链表(链表链接方向单向,访问要从头部开始顺序读取);
        双向链表(每个数据节点中都有两个指针,一个指向直接前驱,一个指向直接后继);
        循环链表(表中最后一个节点的指针域指向头节点,整个链表形成一个环);

    2. 队列

        先进先出的线性表结构,插入在一端,删除在另一端;

    3. 栈

        先进后出的线性表结构,只能在一端进行插入和删除操作

    4. 哈希表

        它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度;这个映射函数叫做散列函数,存放记录的数组叫做散列表;

    5. 堆

        看作一棵树的数组对象,堆中某个节点的值总是不大于或不小于其父节点的值,堆总是一棵完全二叉树;根节点最大的叫大根堆,根节点最小的叫小根堆;

    6. 优先队列

        优先队列中,元素被赋予优先级,当访问元素时,具有最高优先级的元素最先删除;常采用堆数据结构来实现;

    7. 字典树(非线性结构)

        是哈希树的变种,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高;

    8. 树(非线性结构)

        二分查找树(BST,左子树节点都比根节点小,右子树节点都比根节点大);

        平衡二叉树(AVL,它是一棵空树或它的左右两个子树的高度差(平衡因子:结点左子树的深度减去右子树的深度)的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树);

        红黑树(自平衡的二叉查找树,规则1节点是红或黑,规则2根节点黑色,规则3每个叶子节点都是黑色的空节点(NIL),规则4每个红色节点的两个子节点都是黑色(不能有两个连续的红色节点),规则5从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点)(变色、旋转)

    9. 图(非线性结构)

        无向图(边没有方向的图);

        连通图(在无向图中,若从顶点i到顶点j有路径相连(当然从j到i也一定有路径),则称i和j是连通的;如果是有向图,那么连接i和j的路径中所有的边都必须同向;如果图中任意两点都是连通的,那么图被称作连通图。如果此图是有向图,则称为强连通图);

  • 相关阅读:
    linux内核系统调用和标准C库函数的关系分析
    Linux下内存映射文件的用法简介
    Hi35xx 通用GPIO 使用篇(板子3G电源控制脚说明)
    关于Linux用户名
    关于ARGB_8888、ALPHA_8、ARGB_4444、RGB_565的理解
    PixelFormat 图像颜色的数据格式
    Ubuntu 搭建svn服务器 ,以及常见错误解决方案
    安装VisualSVN Server 报错The specified TCP port is occupied
    SVN服务器搭建和使用(三)
    SVN服务器搭建和使用(二)
  • 原文地址:https://www.cnblogs.com/colima/p/9200874.html
Copyright © 2011-2022 走看看