栈和队列 PPT课件.pptVIP

  • 66
  • 0
  • 约7.11千字
  • 约 67页
  • 2021-11-03 发布于湖北
  • 举报
在循环队列中出队的算法为 DELQUEUE(queue,r,f,out) /* 在循环队列queue中退出一个元素送out */ { if(f==r)   { printf(队空);   } else { f=(f+1)%n;    out=queue[f]; } } 例4.2 设有一个有序线性表A(n)和循环队列Q(m),设计一个算法,使得在线性表中比关键字KEY大的数据送到循环队列中。设队列Q中的逻辑地址为1~m,F为队首指针,R为队尾指针。 分析 由于线性表A是有序的,因此只需确定在线性表A中比KEY大的值的序号i(地址),然后从i开始直到n逐个地把线性表中的数据送入循环队列。当然,下面的情况也应考虑在内:若线性表A所有的值均比KEY小,则不必把数据送入队列;也有可能在进队过程中,循环队列的存储空间不够(队满),产生溢出而出错,最后还要修正线性表的表长。图4-8给出了算法的流程框图。 算法描述如下: LIST_QUEUE(a,q,r,f,key) /* 在有序线性表a[1:n]中把比关键字值key大的数值送到循环队列q[1:m]中,其中r和f分别 是队首指针和队尾指针 */ { for(i=1; i=n; i++) if(a[i]key)break; /* 在线性表中找比key值大的值的位置 */ if(i=n)

文档评论(0)

1亿VIP精品文档

相关文档