zoukankan      html  css  js  c++  java
  • 线性表的顺序存储结构--数组(顺序表)、栈、队列

    线性表

    顺序存储结构--数组(顺序表)

    优点:  ①可以随机存取

              ②空间利用率高

              ③结构简单

    缺点:①需要一片连续的存储空间

         ②插入删除会引起大量的元素移动,操作不便

              ③预分配空间可能不足也可能浪费

    解决方法:限定一定条件下线性表--插入删除在固定的位置--栈和队列

    [先进后出,后进先出]

    特征:①在一端(栈顶)进行插入、删除操作

         ②一般用来容纳已经接受但不处理的信息

    栈的实现:增设一指针top指向当前栈顶位置

    栈的应用:①十进制转八进制

         ②矩阵连乘计算量

         ③方法的调用过程:a,保存返回地址b.局部变量值得保存

    队列[先进先出]

    特征:①总是在一端插入元素,另一端删除元素

    队列的实现:

      增设第一个元素的前面的指针front

      增设指向最后一个元素的指针rear‘

    循环队列:通过模运算,成为循环队列

    队空:front==rear

    队满:(rear+1)%m==front(正常情况下,应是front==rear,但是front==rear已经是判断队空的条件,无法区分队空还是队满,需要再去使用变量标识,在操作时需要判断造成时间上的浪费,不如浪费一个空间,即若rear+1==front时,又因为是循环数组所以(rear+1)%m==front,有种用空间换取时间的感觉)

    队满时的元素个数:m-1

    计算元素个数:(rear-front+m)%m(+-一个m时不改变求余的,但是如果rear-front<0时,可以通过+m得到余数)

  • 相关阅读:
    DHT(Distributed Hash Table) Translator
    Introducing shard translator
    【转】shell脚本中echo显示内容带颜色
    javac 错误: 编码GBK的不可映射字符
    一致性哈希(consistent hashing)
    在bash shell中使用getfattr查看文件扩展属性
    css3在不同型号手机浏览器上的兼容一览表
    META是什么意思?
    JS异步加载的三种方式
    AJAX中的同步加载与异步加载
  • 原文地址:https://www.cnblogs.com/code-fun/p/11732367.html
Copyright © 2011-2022 走看看