zoukankan      html  css  js  c++  java
  • 数据结构与算法绪论学习 Day2 _线性表

    线性表是由n(n>=0)个相同的数据元素构成的有限序列

    线性表分为

    顺序表:在内存中用一块地址连续的空间依次存放线性表的元素 最常见的就是数组

    顺序表的存、读数据不管在哪个位置,时间复杂度都是O(1),而在插入和删除元素的时候,时间复杂度都是O(n)

    所以线性表比较适合元素个数稳定,高存取、低删减的应用

    优点:

    1. 无需为表中的元素之间的逻辑关系增加额外的存储空间
    2. 可以快速的存取表中仍以位置的元素

    缺点:

    1. 插入和删除操作需要移动大量的元素
    2. 当线性表长度变化较大的时候,难以确定存储空间的容量
    3. 容易造成存储空间的碎片

    链表:散列存储

    单链表:

      

     在内存中的任何未被占用的随意单位中存放元素

     存储自身Node + 后续节点的存储地址(指针)  组成

        public class Node
        {
            /// <summary>
            /// 当前节点数据域
            /// </summary>
            Object data;
            /// <summary>
            /// 指针域
            /// </summary>
            Node next;
        }

    第一个节点的存储位置叫做头指针

    头结点:为了方便操作第一个元素,使其与其他元素的操作一致,一般无意义,但是可以用来存放链表的长度(非必要元素)

    其中最后一个结点的后驱结点是null

    双向链表:

     由 前驱结点+Node+后驱结点 组成,其中最后一个结点的后区节点是null, 在C#中常见的双向链表数据结构是linkedlist

    循环链表

     

     最后一个结点的后区节点不是null

  • 相关阅读:
    HD200703
    并查集——合作网络D306
    并查集——易爆物D305
    NOIP初赛知识点
    离散化
    wsl2启动时无法添加自启动和加载环境变量的解决办法
    wsl2上用docker部署运行环境,mvn构建镜像找不到dockerhost
    docker 创建自己的镜像仓库
    单机多容器管理(已转k8s工具,仅参考) docker compose简介+使用+遇到的坑
    ubuntu下载安装jdk+maven,配置ssh
  • 原文地址:https://www.cnblogs.com/yuchenghao/p/12805354.html
Copyright © 2011-2022 走看看