队列
来源:互联网 发布:ubuntu for arm 编辑:程序博客网 时间:2024/06/07 00:28
和栈相反,队列是一种先进先出的线性表,允许在表的一端进行插入,而在另一端删除元素。
//队列的抽象数据类型定义ADT Queue{ 数据对象:D={ai|ai属于ElemSet,i=1,2,...,n,n>=0} 数据关系:R1={<a(i-1),ai>|a(i-1),ai属于D,i=2,...,n} 约定其中ai为队列头,an端为队列尾。 基本操作: InitQueue(&Q) 操作结果:构造一个空队列Q DestroyQueue(&Q) 初始条件:队列Q已存在。 操作结果:队列Q被销毁,不再存在。 ClearQueue(&Q) 初始条件:队列Q已存在。 操作结果:将Q清为空队列 QueueEmpty(Q) 初始条件:队列Q已存在。 操作结果:ruoQ为空队列,则返回TRUE,否则FALSE QueueLength(Q) 初始条件:队列Q已存在。 操作结果:返回Q的元素个数,记队列的长度 GetHead(Q,&e) 初始条件:队列Q为非kong'dui'li。 操作结果:用e返回Q的队头元素 EnQueue(&Q,e) 初始条件:队列Q已存在。 操作结果:插入元素e为Q的新的队尾元素 DeQueue(&Q,&e) 初始条件:队列Q为空队列 操作结果:删除Q的队头元素,并用e返回其值 QueueTraverse(Q,visit()) 初始条件:队列Q已存在且非空 操作结果:从队头到队尾,依次对Q的每个数据元素调用函数visit(),一旦visit()失败,则操作失败。 }ADT Queue
0 0