zoukankan      html  css  js  c++  java
  • 算法复习(4)向量与列表

      向量是由一组元素封装而成的线性序列。向量是数组的抽象与泛化,元素类型可以灵活选取。向量使用连续的内存存储元素。一旦容量需要扩充,在紧临的后方再开辟一块内存(通常是倍增)。如果后方的内存不足,则寻找一块足够大的内存,开辟倍增的内存,再将原来的向量复制过来。

      向量是连续内存,所以循秩访问非常方便,通过指针计算,可以一步到位。同时,也由于必须是连续内存,在其中插入与删除元素,需要对后续的元素全部进行移动,操作复杂。

      列表采用动态储存策略。其中的元素称为节点。每个节点至少包含三个成员,数据、前指针和后指针。各节点通过指针相互联接,在逻辑上是一个线性结构。

      与向量中紧密的内存排布不同,列表的内存可以是不连续的,通过指针串在一起。通过操作符重载,列表也可以实现“循秩访问”,但实质上是逐次移动到秩代表的节点。列表可以方便的插入与删除。插入删除只用修改3个元素的指针指向即可,对其他元素无影响,效率较高。

      删除列表中元素的过程如下:

      先将元素的前后节点连接起来(p -> pred -> succ = p -> succ; p -> succ -> pred = p -> pred;)

      再delete p。

      向列表中插入元素的过程如下:

      新建节点,新建的过程中,将新节点是的指针正确指向。(node -> succ = p; node -> pred = p -> pred;)

      再将原节点及其前节点指针正确指向(p -> pred -> succ = node; p -> pred = node;)

      此处如果引入头尾不可见的哨兵节点,则代码通用。如果不引用,则需要对首末节点的情况单独处理。

  • 相关阅读:
    css---box-sizing
    float与inline-block的一些应用场景的区别
    一些html元素的最原始状态
    css之深入理解overflow
    css中的锚点
    新增UI样式
    zh-CN、zh-Hans区别
    SourceTree 3.3.6安装跳过注册安装
    Windows sever 由于管理员设置的策略,该磁盘处于脱机状态的解决方法。
    CentOS7.x安装VNC实录
  • 原文地址:https://www.cnblogs.com/itit/p/3440748.html
Copyright © 2011-2022 走看看