堆、栈与队列

    定义:一种只能在一段进行插入或删除操作的线性表,表中允许进行插入、删除操作的一段称为栈顶,另一端则为栈底。

   原则:先进后出

   定位:栈顶位置是动态的,当栈中没有数据元素时,称为空栈。

              由操作系统自动分配 ,存放函数的参数值,局部变量的值等。

              他们通常都是被调用时处于存储空间中,调用完毕立即释放;

   图像表示:

           
  实例:假设有四个元素a/b/c/d进栈,那么他们的出栈顺序可以是:

                     ⑴abcd ⑵abdc ⑶acbd ⑷adcb ⑸bacd dcba ⑺badc 

                     ⑻bcad ⑼bcda ⑽bdca ⑾cbad ⑿cbda ⒀cdba ⒁acdb

       基本运算:InitStack(&s):初始化一个空栈。

                         DestroyStack(&s):销毁栈并释放空间

                         StackEmpty(&s):判断栈是否为空,返回真假

                         Push(&s,e):进栈,将元素e入栈

                         Pop(&s,&e):出栈,退出栈顶元素赋予e

                         GetTop(s,&e):取出栈顶元素。返回当前栈顶元素给e

                  

队列  

     定义:是有限个同类型数据元素的线性序列,在表的一端(队尾)进行插入,另一端(队首)删除。

       原则:先进先出

       图像表示:

                    

        实例:假设有四个元素a/b/c/d进栈,那么他们的出栈顺序是:a/b/c/d

        基本运算:InitQueue(&q):初始化一个空队列。

                         DestroyQueue(&q):销毁队列并释放空间

                         QueueEmpty(&q):判断队列是否为空,返回真假

                         enQueue(q):进队列,将元素e入队列作为队尾元素

                         deQueue(&q,e):出队列,退出队列并将该元素赋予e

        分类:

              顺序队列:

                 

                                   顺序队列操作:

                       

              循环队列:

                  出现原因:在队列的入队与出队示意图中,给队列分配的存储空间只有4个,如果abcd全部出队,那么就只有队尾的e和e下面的存储空间,如果新的元素f想要进入,因为e还没有出去,所以f无法进入,但是e下面却剩余了很大的存储空间,即实际空间并没有占满。这种现象就是“假溢出”。而为了解决假溢出,就出现了循环队列。

                  循环队列操作:

                        

              链队列:使用一个带有头结点的单链来表示队列  

                      

          链队列的操作:

                        



总结:栈和队列的区别是啥? 吃多了拉就是队列;吃多了吐就是栈(在网上找到的精辟回答)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 34
    评论
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值