WWWlr

数据结构-栈和队列

一、定义(区别:栈和队列的插入、删除运算的限定不同)

(1)栈:

    后进先出:最后进的元素,最先出来。

    

    (注:a1为表头)

(2)队列:队列主要用在和时间有关的地方

    先进先出:先进的元素,先出来。

    只允许一段进行插入,另一端进行删除

二、栈(详细内容)

(1)栈:主要用在函数调用和返回,数字转字符,表达式求值,走迷宫等等。

    后进先出:最后进的元素,最先出来。

    

    (注:a1为表头)

    1.栈的存储方式:

      栈的本质是线性表:因此分为顺序存储和链式存储

    2.栈的元素:

      开始时:栈中没有元素时,栈顶就是栈底

      push入元素:栈顶栈底分离,整个栈的容量最大

      元素出栈pop:栈顶下移。

     3.栈的实现分类:

      栈分为数组栈和链表栈。

      数组栈:使用数组进行功能的模拟,实现较为快速和便利。

      链表栈:使用链表的思路,较为麻烦,但稳定。

        链表栈分为动态链表栈与静态链表栈

        静态链表栈:给定了链表栈的大小

        动态链表栈:自己开辟存储空间

(2)数组(顺序)栈:用一段连续的存储空间来存储栈中的数据元素

    1.指针

      顺序栈需要两个指针(栈顶指针base和栈顶指针top)

      栈顶指针:指向栈顶元素的上一个元素(指向空)

      栈底指针:首地址/基地址

  

 

(3)链表栈(链栈)

    1.结构

      结点:

      

 

 

      还有一个永远指向栈头的指针top和一个计数器count

 

    2.入栈

      找到top所指向的空间

      创建一个新的结点

      将新的结点的next指针指向top指针指向的空间

      再将top指针转移,并且指向新的结点

 

    3.出栈

      必须要在栈不为空的情况下才可以!!!!

      

 

三、队列

(1)链式队列(无法估算队列长度时使用)

    

 

(2)循环队列:(可以估算长度时使用)

      front和rear相互追赶(即进队和出队)

    

      (1)front=(rear+1)%MAXSIZE

      (2)当(rear+1)%MAXSIZE=front时,队列满了。

 

 

 

       

 

posted on 2021-03-15 21:13  WWWlr  阅读(35)  评论(0编辑  收藏  举报