(二)栈和队列的顺序存储结构

2021/9/7 23:06:32

本文主要是介绍(二)栈和队列的顺序存储结构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

- 栈

  • 顺序栈,即栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。通常的习惯做法是以top=0表示空栈。由于栈在使用过程中所需最大空间的大小很难估计,因此,一般来说,在初始化设空栈时不应限定栈的最大容量。一个较合理的做法是:先为栈分配一个基本容量,然后在应用过程中,当栈的空间不够使用时再逐段扩大。为此,可设定两个常量:STACK_INIT_SIZE(存储空间初始分配量)和 STACKINCREMENT(存储空间分配量),并以下述类型说明作为顺序栈的定义。
    typedef struct{
      SElemType * base;
      SelemType * top;
      int stacksize;
    }SqStack;
    
    stacksize:指示栈的当前可使用的最大容量。
    base:栈底指针
    top:栈顶指针

    栈的初始化操作为:按设定的初始化分配量进行第一次存储分配,base栈底指针,在顺序栈中,它始终指向栈底的位置,若base值为NULL,则表明栈结构不存在。top为栈顶指针其初始值指向栈底,即top=base可作为栈空的标记,每当插入新的栈顶元素时,指针top增1;删除栈顶元素时,指针top减1,因此,非空栈中的栈顶指针始终在栈顶元素的下一个位置上。如下图:

    •   

       

       

       

       

 



这篇关于(二)栈和队列的顺序存储结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程