zoukankan      html  css  js  c++  java
  • 《数据结构》学习笔记

    一些基础的概念:

    1,什么是数据结构?

    数据结构是指带有某种结构或者关联的数据的集合。包含两点:

    • 含有数据元素的信息;
    • 含有各数据元素的前后件关系;
      • 前后件关系,是指数据元素的逻辑关系,与在计算机中的存储位置无关。

    数据元素的逻辑结构:反应数据元素间逻辑关系的结构。

    数据元素的存储结构:数据元素间存放位置的结构。深入理解如下:

    • 各数据元素在计算机存储空间中的位置关系与它们的逻辑关系不一定相同。
      •   例如:Vector,数据的逻辑关系与存储位置关系是一致的;而List,则不一致。
    • 在数据的存储结构中,不仅存放各数据的元素信息,还需存放各数据元素间的前后件关系
      •   例如List中,存放指针,以指向元素的前驱与后继。

    2,如何理解“某个空的数据结构”这句话?什么是数据结构中的根节点/内部结点/终端结点?

    简单讲,就是元素的前后件关系建立了,但是却没有存放元素;如一个空的Vector,存储空间分配了,元素的逻辑关系也定了,但是还没有元素。

    没有前件的结点,称为根结点;没有后件的结点称为终端结点(又称叶结点);有前后件的结点称为内部结点:

    3,线性数据结构与非线性数据结构

    如果一个非空的数据结构满足以下两个条件,则可以成为线性数据结构;否则为非线性。

    • 有且仅有一个根结点;
    • 每一个结点最多有一个前件,也最多有一个后件;

    线性结构的一个性质:在其中插入或者删除一个结点后还应是线性结构。

    4,数据结构支持的操作:静态操作和动态操作

    • 静态操作:仅从中获取信息,如向量的size(), get()操作。
    • 动态操作:修改数据结构中的信息,如向量的insert(),remove()操作。

    5, 数据结构的存储策略:静态存储和动态存储

    • 静态存储:各元素物理地址连续,各数据项的物理存放位置与逻辑次序完全对应。
    • 动态存储:如list,各元素逻辑上具有线性次序,但物理存放位置上却没有任何限制。
    • 例如:Vector为静态存储,对静态操作的效率很高;List为动态存储,对动态操作的效率很高。因此,Vector长于数据访问;List长于数据的频繁插入删除。

    6,栈与队列

    • 相比于Vector与List,Stack和Queue的操作仅限于逻辑上的特定某端。得益于其简洁性和规范性,成为构造高级数据结构的基础,应用超广。
    • Stack (后进先出,LIFO)应用举例:网页浏览器的历史操作/访问页面记录;编辑器的历史操作记录。
    • Queue (先进先出,FIFO)应用举例:社会资源分配,多用户共享的打印机。

    更多:知乎上一些深入浅出的见解

    https://www.zhihu.com/question/21318658/answer/42690576

  • 相关阅读:
    Java多态
    24系列EEPROM应用注意事项
    EEPROM读写问题
    EEPROM读写操作常见的陷阱
    MPLAB X IDE使用心得
    PIC18系列单片机I/O端口操作寄存器及应用
    IAR使用printf()函数 打印输出
    0欧电阻作用
    IAR MSP430设置合理堆栈大小(the stack pointer for stack is outside the stack range)
    MSP430教程14:MSP430单片机ADC12模块
  • 原文地址:https://www.cnblogs.com/sanlangHit/p/11968076.html
Copyright © 2011-2022 走看看