zoukankan      html  css  js  c++  java
  • 01 绪论

    绪论

    1.分类

    1.1 逻辑结构

    Ⅰ 线性结构

    ① 有且只有一个根结点;
    ② 每个结点最多只有一个前驱;
    ③ 也最多只有一个后继;

    线性结构指的是数据元素之间存在着“一对一”线性关系的数据结构
    是逻辑上一维,不要求内存空间上顺序

    线性表:(采用顺序表或链表形式)
    :顺序栈<—>链栈
    队列:双队列、循环队列<—>链队
    ​ 串:字符串...
    ​ 线性数组:普通一维数组、顺序表(采用数组形式,顺序存储结构保存的线性表)...
    ​ 线性链表:单链表、双向链表...
    ​ 矩阵
    ​ 向量:n维向量
    ​ 二维表

    Ⅱ 非线性结构

    非线性结构指的是数据元素之间存在着“一对多”非线性关系的数据结构

    ​ 集合结构
    ​ 树结构:树、二叉树...
    ​ 堆:其逻辑结构是(符合某种堆排序的)完全二叉树或近似完全二叉树
    ​ 图结构:有向图、无向图;邻接表、邻接矩阵...​

    ​ tips:
    ​ 数组有非线性数组:二维数组、多维数组;稀疏矩阵...
    ​ 链表有非线性链表:二叉链表
    ​ 广义表(线性表的推广,它的数据元素是线性表,但不同构,即或者是单元素或者是线性表)因此广义表本身是非线性结构

    带链的栈(链栈)可以用收集计算机存储空间所有的空闲的存储结点,是线性表。
    //数组可以是线性结构也可以是非线性结构
    //链表可以是线性结构也可以是非线性结构
    	首先,一般做到题目,说链表是线性结构的,默认是线性链表
    	定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。
    	在单链表的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。
    	循环链表具有单链表的特征,但又不需要增加额外的存储空间,仅对表的链接方式稍作改变,使得对表的处理更加方便灵活,属于线性链表。
    	二叉链表是二叉树的物理实现,是一个存储结构,不属于线性结构,为非线性结构。
    /*广义表是*/线性表的推广(推广部分)属于/*非线性结构*/
    

    1.2 存储结构

    Ⅰ 顺序存储

    插入、删除运算需要引起大量结点移动,效率不高

    顺序表属于线性数组(线性表)的顺序存储结构【是随机存取的存储结构】
    ​ 顺序队列属于队列(线性表)的顺序存储结构
    循环队列属于队列(线性表)的顺序存储结构
    ​ 完全二叉树属于树的顺序存储结构
    ​ 稀疏矩阵(三元组法存储)属于非线性结构的顺序存储方式

    Ⅱ 链式存储

    线性链表/单链表属于线性表的链式存储结构【是顺序存取的存储结构】
    ​ 链队属于队列(线性表)的链式存储结构
    二叉链表属于二叉树的链式存储结构

    Ⅲ 索引存储

    Ⅳ 散列存储

    ​ 哈希表

    2.其它

    ​ 链表的每个节点都恰好包含一个指针【错误】
    ​ 例:双链表的每个节点中包含两个指针

    线性表指的是逻辑结构上一维,属于逻辑结构范畴;存储结构上既可以顺序存储,也可以链式存储,
    有序表指的是逻辑意义上数据元素的有序,属于逻辑结构范畴;存储结构上既可以顺序存储,也可以链式存储,
    顺序表指的是存储结构(内存空间)上顺序存储,属于顺序存储结构,属于存储结构范畴
    哈希表指的是存储结构(内存空间)上散列存储,属于散列存储结构,属于存储结构范畴
    单链表指的是存储结构(内存空间)上链式存储,属于链式存储结构,属于存储结构范畴
    邻接矩阵指的是以数组方式存储图结构的存储结构
    邻接表指的是以数组与链表相结合的形式存储图结构的存储结构

    ​ 二分查找只适合①顺序存储的②有序表

  • 相关阅读:
    SSL 1010——方格取数
    SSL 1558——科技庄园
    SSL 2295——暗黑破坏神
    SSL 2294——打包
    SSL 2293——暗黑游戏
    SSL 2305——竞赛总分
    SSL 1072——砝码称重
    SSL 2291——分组背包
    SSL 2290——潜水员
    SSL 2301——混合背包
  • 原文地址:https://www.cnblogs.com/Hokkaido-JL/p/11640164.html
Copyright © 2011-2022 走看看