队,栈,UML9种试图

来源:互联网 发布:ubuntu 16.10 安装后 编辑:程序博客网 时间:2024/06/09 21:39

栈 

栈的操作原则是:先进后出,后进先出

二、栈的特点
根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。
也就是说,栈是一种后进先出(Last In First Out)的线性表,简称为LIFO表。

 

三、栈的运算 
1.初始化栈:INISTACK(&S)
将栈S置为一个空栈(不含任何元素)。
2.进栈:PUSH(&S,X)
将元素X插入到栈S中,也称为 “入栈”、 “插入”、 “压入”。
3.出栈: POP(&S) 
删除栈S中的栈顶元素,也称为”退栈”、 “删除”、 “弹出”。
4.取栈顶元素: GETTOP(S)
取栈S中栈顶元素。
5.判栈空: EMPTY(S)
判断栈S是否为空,若为空,返回值为1,否则返回值为0。

 

 

栈总是处于栈空、栈满或不空不满三种状态之一,它们是通过栈顶指针top的值体现出来的。
规定:top的值为下一个进栈元素在数组中的下标值。
栈空时(初始状态),top=0;
栈满时,top=MAXN.

 

三、栈的五种运算
(一) 进栈
1) 进栈算法
(1) 检查栈是否已满,若栈满,进行“溢出”处理。
(2) 将新元素赋给栈顶指针所指的单元。
(3) 将栈顶指针上移一个位置(即加1)。 

 

(二) 出栈
1) 出栈算法
(1) 检查栈是否为空,若栈空,进行“下溢”处理。
(2)将栈顶指针下移一个位置(即减1) 。
(3)取栈顶元素的值,以便返回给调用者。 

四.栈的共享存储单元
有时,一个程序设计中,需要使用多个同一类型的栈,这时候,可能会产生一个栈空间过小,容量发生溢出,而另一个栈空间过大,造成大量存储单元浪费的现象。 为了充分利用各个栈的存储空间,这时可以采用多个栈共享存储单元,即给多个栈分配一个足够大的存储空间,让多个栈实现存储空间优势互补。

 

4、两个栈共享同一存储空间
     当程序中同时使用两个栈时,可以将两个栈的栈底设在向量空间的两端,让两个栈各自向中间延伸。当一个栈里的元素较多,超过向量空间的一半时,只要另一个栈的元素不多,那么前者就可以占用后者的部分存储空间。
    只有当整个向量空间被两个栈占满(即两个栈顶相遇)时,才会发生上溢。因此,两个栈共享一个长度为m的向量空间和两个栈分别占用两个长度为 └ m/2┘和┌m/2┐的向量空间比较,前者发生上溢的概率比后者要小得多。

 

 队列 

 

 1、定义
     队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表

 

(1)允许删除的一端称为队头(Front)
  (2)允许插入的一端称为队尾(Rear)
  (3)当队列中没有元素时称为空队列
  (4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表
     队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(即不允许"加塞"),每次离开的成员总是队列头上的(不允许中途离队),即当前"最老的"成员离队。

 

队列的存储结构:

 

顺序队列
队列的顺序存储结构称为顺序队列,顺序队列实际上是运算受限的顺序表,和顺序表一样,顺序队列也是必须用一个数组来存放当前队列中的元素。由于队列的队头和队尾的位置是变化的,因而要设两个指针和分别指示队头和队尾元素在队列中的位置。 

 

1、用例图(use case diagrams)

    【概念】描述用户需求,从用户的角度描述系统的功能

    【描述方式】椭圆表示某个用例;人形符号表示角色

    【目的】帮组开发团队以一种可视化的方式理解系统的功能需求

    【用例图】

     2、静态图 

          
      1. 类图(class  diagrams) 

    【概念】显示系统的静态结构,表示不同的实体是如何相关联的

    【描述方式】三个矩形 

    【目的】表示一个逻辑类或实现类,逻辑类通常是用户的业务所涉及的事物;实现类是程序员处理的实体

    【类图】

     
       
    1. 对象图(object      diagrams)

    【概念】类图的一个实例,描述系统在具体时间点上所包含的对象以及各个对象的关系

    【对象图】

     
       

          3、交互图

          用来描述对象之间的交互关系 

    1. 序列图(顺序图)

    【概念】描述对象之间的交互顺序,着重体现对象间消息传递的时间顺序

    【描述方式】横跨图的顶部,每个框表示每个类的实例或对象;类实例名称和类名称使用冒号分开

    【目的】显示流程中不同对象之间的调用关系,还可以显示不同对象的不同调用。

    【序列图】

     
       
    1. 协作图(Collaboration     diagrams)

    【概念】描述对象之间的合作关系,侧重对象之间的消息传递 

        4、行为图:描述系统的动态模型和对象之间的交互关系 

             1.状态图(Statechart       diagrams) 

        【概念】描述对象的所有状态以及事件发生而引起的状态之间的转移

        【描述方式】 

    1. 起始点:实心圆 
    2. 状态之间的转换:使用开箭头的线段 
    3. 状态:圆角矩形 
    4. 判断点:空心圆 
    5. 一个或多个终止点:内部包含实心圆的圆

    【目的】表示某个类所处的不同状态以及该类在这些状态中的转换过程

      2.活动图(Activity      diagrams)

    【概念】描述满足用例要求所要进行的活动以及活动时间的约束关系

    【描述方式】 

    1. 起始点:实心圆 
    2. 活动:圆角矩形 
    3. 终止点:内部包含实心圆的圆 
    4. 泳道:实际执行活动的对象

    【目的】表示两个或多个对象之间在处理某个活动时的过程控制流程

    【活动图】 

    活动图和状态图区别:

    5、实现图  

    1. 构件图(Component       diagrams) 

    【概念】描述代码构件的物理结构以及各构件之间的依赖关系

    【描述方式】构件

    【目的】提供系统的物理视图,根据系统的代码构件显示系统代码的整个物理结构

    【构架图】

      

    1. 部署图(Deployment      diagrams)

    【概念】系统中硬件的物理体系结构

    【描述方式】 

    1. 三维立方体表示部件 
    2. 节点名称位于立方体上部

    【目的】显示系统的硬件和软件的物理结构

    【部署图】


 

0 0
原创粉丝点击