目录
    • 栈的定义
  • 顺序栈
    • 顺序栈的定义
    • 顺序栈的初始化
    • 顺序栈的入栈
    • 顺序栈的出栈
    • 取顺序栈的栈顶元素
  • 链栈
    • 队列
      • 队列的定义
    • 队列的顺序表达与实现
      • 队列顺序存储结构
      • 假溢出
    • 循环队列
      • 循环队列的初始化
      • 循环队列的入队
      • 循环队列的出队
    • 链队列
      • 链栈的初始化
      • 链栈的入队
      • 链栈的出队

    上文详细的讲解了顺序表与链表的实现,相信大家在顺序表与链表的指基础上,很容易就能学会站和队列,废话不多说,我们马上开始!

    栈的定义

    栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作

    C语言示例代码讲解栈与队列

    假设栈 【s = (a1,a2,……,an) 】,a1为栈底元素,an为栈顶元素。由于栈只能在栈顶进行插入和删除操作,所以进栈次序依次为【a1,a2,……,an】,出栈次序为【an,……,a2,a1】

    由此可见:栈的操作特性可以明显地概括为后进先出

    栈类似于线性表,它也有两种对应的存储方式分别为顺序栈和链栈。

    顺序栈

    顺序栈的定义

    Q:什么是顺序栈?

    A:采用顺序存储的栈成为顺序栈。它利用一组地址连续的存储单位存放自栈底到栈顶的数据元素,同时附设一个指针(top)来指示当前栈顶的位置。

    栈的顺序存储类型可描述为

    #define MaxSize 100				//定义栈中元素的最大个数
    typedef struct
    {
    	SElemtype *base;			//栈底指针
    	SElemtype *top;				//栈顶指针 
    	int stacksize				//栈可用的最大容量 
    }SqStack; 

    顺序栈的初始化

    Q:什么是顺序栈的初始化?

    A:顺序栈的初始化操作就是为顺序栈动态分配一个最大容量为 MaxSize 的数组空间。

    实现原理

    1. 为顺序栈动态分配一个最大容量为MAXSIZE的数组
    2. 栈顶指针top初始为base,表示栈为空
    3. stacksize置为栈的最大容量MaxSize

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。