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

    关于数据结构,可以大致分为以下两类:

    • 逻辑结构:抽象出来的数据模型。每一种逻辑结构都可以基于不同的物理结构进行存储。
    • 物理结构:数据在内存中的真实存储方式。

    基本数据结构(逻辑结构)

    • 集合:元素之间没有关系,各自独立
    • 线性结构:元素之间是一对一的关系,除首尾元素外每个元素都有一个前驱和一个后继
    • 树:元素之间是一对多的关系,每个父元素可以有多个子元素,但子元素只能有一个父元素
    • 图:元素之间是多对多的关系,每个元素都可以跟另外的一个或多个元素关联

    在上面这四种结构的基础上,再进行组合排列,就可以表示整个宇宙了。
    在这里插入图片描述

    数据的存储结构(物理结构)

    任何类型的数据,最终都需要存储在内存中。根据内存中存储的数据是否连续,可以分为两种存储方式:

    • 顺序存储:每个逻辑上相邻的元素,在物理内存上也相邻。静态操作快,动态操作慢。
    • 链式存储:逻辑上相邻的元素,在物理内存上离散,通过指针相互关联。静态操作慢,动态操作快。

    静态操作:查找和修改元素。操作完成后数据整体大小不变。
    动态操作:增删元素。操作完成后数据整体大小发生变化。

    最常见的顺序存储的数据类型就是数组。数组中的多个元素在逻辑上和物理上都是相邻的,直接通过下标访问。

    最基本的链式存储的数据类型是链表。链表中的每个元素,除了保存数据外,还保存指向下一个元素的指针。要访问某个位置的元素,必须从首元素开始顺着指针一个个找下去。

    程序本质

    程序的本质 = 算法 + 数据结构

    作为野生程序员,学过几种编程语言,但是每次想深入研究 Linux 和 MySQL 以及 Redis 等常用工具,都会有种无力感。业务代码可以敲的很溜,但是如果搞不懂底层原理,那始终只是一个码农,最多是熟手码农而已。

    任何牛逼的项目,本质上都是对内存中数据的操纵。数据组织结构良好,才能方便基于各种算法对其进行操纵。而算法有很多,选择最佳方案可以成倍的提高效率。

  • 相关阅读:
    C++ CheckListBox
    TreeView查获节点并选中节点
    创建文件自动重命名
    bat
    Edit显示行号
    FindStringExact
    Extended ComboBox添加图标
    C++ Combobox输入时自动完成
    C++ ComboBox基础
    C++ Code_combobox
  • 原文地址:https://www.cnblogs.com/kika/p/10851504.html
Copyright © 2011-2022 走看看