数据结构与算法绪论学习 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

原文地址:https://www.cnblogs.com/yuchenghao/p/12805354.html