zoukankan      html  css  js  c++  java
  • 数据结构复习之线性表

    线性表基本概念

      线性表是零个或多个具有相同数据类型的数据元素的有序序列。

    线性表的存储结构

      1.顺序存储结构

        存储方式:顺序储存结构用一段连续的存储单元一次存储线性表的的数据元素(通常由数组实现)

        适用情况:当线性表频繁查找,很少进行插入和删除操作的情况

        优缺点:

          优点:  无须为表示元素之间的逻辑关系而增加额外的存储空间

              可以快速地存取表中任一位置的元素

          缺点:  插入和删除元素操作需要移动大量元素

              当线性表长度变化较大时,难以确定存储空间的容量

              顺序存储结构需要预分配存储空间,分大了易造成浪费,分小了,易发生向上溢出

              造成存储的碎片化

      2.链式存储结构

        存储方式:单链表采用链式存储结构,用一组任意的存储单元存放线性表元素。

        适用情况:当线性表频繁插入和删除的情况,

             还有是线性表元素个数变化较大或根本不知道有多大的情况,这样无需考虑存储空间问题。

        优缺点:

          优点:  单链表在找出某位置的指针后,插入和删除时间仅为O(1)

              单链表不需要分配存储空间,只要有就可以分配,元素个数不受限制。

          缺点:  查找时需要遍历链表,平均移动表长的一般元素,时间为O(n),效率低。

        区分头指针和头结点。

        链式存储结构顺序表不同类型:

    • 单链表
    • 静态链表 ——   用数组描述的链表,不使用指针
    • 循环链表 —— 将单链表中最后一个结点的指针域由空指针改为指向头结点,形成一个环路,头尾相接的单链表。
    • 双向链表   ——  在单链表的每个结点再增加一个指向其前驱结点的指针域(在插入、删除时的修改两个指针变量)
  • 相关阅读:
    邮件系列3 --- 安全传输
    配置postfix支持虚拟域和虚拟用户
    Postfix+Sasl+Courier-authlib+Dovecot+MySQL+extmail 邮件系统部署
    在switch中的case语句中声明变量编译出错的解决方案
    关于自控力
    PUTTY使用Ctrl+s僵死的问题
    sqlite3里类似top的用法
    二维数组、行指针、指针数组、二级指针
    sqlite3_exec函数的使用
    基于s5pv210嵌入式linux使用其他动态、静态库文件程序的交叉编译
  • 原文地址:https://www.cnblogs.com/changyaohua/p/4654093.html
Copyright © 2011-2022 走看看