• 数据结构04


    栈的顺序存储
    采用顺序存储的栈称为顺序栈,它利用一组地址连续的存储单元存放自栈底到栈顶的数据元素,同时附设一个指针(top )指示当前栈顶元素的位置。
    若存储栈的长度为 StackSize ,则栈顶位置 top 必须小于 StackSize 。当栈存在一个元素时, top 等于 0 ,因此通常把空栈的判断条件定为top 等于 -1
    栈的链式存储
    采用链式存储的栈称为链栈,链栈的优点是便于多个栈共享存储空间和提高其效率,且不存在栈满上溢 的情况。通常采用单链表实现,并规定所有操作都是在单链表的表头进行的。这里规定链栈没有头节 点, Lhead 指向栈顶元素
    循环队列
    队列溢出后就是后面满了,就再从头开始,也就是头尾相接的循环。我们把队列的这种头尾相接的顺序存储结构称为循环队列。
    当队首指针 Q->front = MAXSIZE-1 后,再前进一个位置就自动到 0 ,这可以利用除法取余运算 来实现。
    初始时: Q->front = Q->rear=0
    队首指针加 1 Q->front = (Q->front + 1) % MAXSIZE
    队尾指针加 1 Q->rear = (Q->rear + 1) % MAXSIZE
    队列长度: (Q->rear - Q->front + MAXSIZE) % MAXSIZE
    (21 条消息 ) 数据结构:栈和队列 (Stack & Queue) 【详解】 UniqueUnit 的博客 -CSDN 博客栈和队列
    那么,循环队列队空和队满的判断条件是什么呢?
    显然,队空的条件是 Q->front == Q->rear 。若入队元素的速度快于出队元素的速度,则队尾指针很快 就会赶上队首指针,此时可以看出队满时也有 Q ->front == Q -> rear
    为了区分队空还是队满的情况我们可以用一个方式:
    1 )牺牲一个单元来区分队空和队满,入队时少用一个队列单元,这是种较为普遍的做法,约定以 队头指针在队尾指针的下一位置作为队满的标志”
    队满条件: (Q->rear + 1)%Maxsize == Q->front
    队空条件仍: Q->front == Q->rear
    队列中元素的个数: (Q->rear - Q ->front + Maxsize)% Maxsize
    链队列
    队列的链式存储结构表示为链队列,它实际上是一个同时带有队头指针和队尾指针的单链表,只不过它 只能尾进头出而已。
    空队列时, front rear 都指向头结点。
    Q - >front == NULL 并且 Q - >rear == NULL 时,链队列为空。
  • 相关阅读:
    python进阶(26)collections标准库
    图像练习-答题卡opencv(02)
    Flink学习17:算子介绍flatMap
    7个项目管理提示,使你的项目准时交付
    深入理解Linux网络技术内 幕(六)——PCI层和网络接口卡
    数据结构:最全的名词解释
    IT 冷知识:全球第一个“Bug”被发现
    网安之python基础学习作业(1)
    【前端进阶】-TypeScript类型声明文件详解及使用说明
    HTML静态网页成品作业(HTML+CSS+JS)——体育足球介绍设计制作(3个页面)
  • 原文地址:https://blog.csdn.net/Sj740383500/article/details/127811427