码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构--------(堆栈 和 队列)

时间:2017-07-05 21:21:57      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:连续   count   表达式求值   数据   出栈   一个   链式栈   pop   允许   

1、栈

        1、定义:只允许从一端插入或删除的线性表。逻辑结构:元素相邻;物理存储结构:顺序栈 和 链式栈;运算:只能从一端操作,受限的线性表

         2、栈的基本操作: InintStack、StackEmpty、pop 、push 、peek(GetTop)、ClearStack(6个)

         3、顺序栈:利用一组连续地址存储单元存储自栈底到栈顶的元素,同时附有一个指针指向当前栈顶的位置

                                           3.1  顺序栈操作: 初始时 S.top = -1;栈顶元素值:S.data[S.top]

                                                                              进栈操作:首先判断是否栈满,不满进栈,栈顶元素加一(S.data[++S.top] = data)

                                                                              出栈操作:判断是否栈空,不空,出栈,栈顶元素减一 data = S.data[S.top--]

                                                                              栈空条件: S.top = -1;

                                                                              栈满条件:S.top = MaxSize - 1 (从0是第一个)

                                           3.2  共享找 : 让两个顺序栈共享一个一维数组,两个栈的栈底分别为数组两端,判满:S1.top - S0.top = 1;

          4、链式栈: 不存在栈满的情况

2、队列:

           1、 队列也是受限的线性表,只允许从一端插入,另一端进行删除,Front队头允许删除的一端,Rear队尾

插入的一端

            2、顺序存储的队列:初始 Q.rear  == Q.front ==0;

                                                                       入队:  不满,入队,rear + 1;

                                                                       出队:不空,出队,front - 1;

            3、循环队列:当队首指针达到MaxSize - 1时 可以继续添加 到首端0

                                                     初始: Q.rear === Q.front==0;

                                                     入队:如果不满,Q.rear  = (Q.rear +1)%MaxSize

                                                     出队:如果不空,Q.front = (Q.front - 1)%MaxSize

                                                     队列长度:(Q..rear - Q.front + MaxSize) % MaxSize

                                                     判空方法:  a,牺牲一个单位元素来区分队空:  判满 (Q.rear + 1)%MaxSize==Q.front

                                                                                                                               判空 Q.rear == Q.front

                                                                                                                               元素个数:(Q.rear - Q.front + MaxSize) %MaxSize

                                                                         b.用一个额外的元素count记录队列中数目,count==MaxSize  队满

            4、双端队列:两端均可以 入队 出队;受限的双端队列  只有一端可以出队或者其他,两端均可入队等

            5、堆栈的应用:   a、括号匹配

                                                                 b,表达式求值  还有  递归

数据结构--------(堆栈 和 队列)

标签:连续   count   表达式求值   数据   出栈   一个   链式栈   pop   允许   

原文地址:http://www.cnblogs.com/abstract-fabulous/p/7123270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!