首页 > 编程语言 >【数据结构/C语言】试给出此循环队列的队满条件,并写出相应的入队和出队操作的算法

【数据结构/C语言】试给出此循环队列的队满条件,并写出相应的入队和出队操作的算法

时间:2022-11-14 18:56:50浏览次数:39  
标签:算法 队列 length C语言 入队 出队 rear

假设将循环顺序队列定义为:以域变量rear和length分别指示循环顺序队列中队尾元素的位置和内含元素的个数,试给出此循环队列的队满条件,并写出相应的入队和出队操作的算法。

提示:满足上述条件的循环顺序队列的存储结构可描述如下:

#define  MAXQSIZE  100

typedef struct   {

     QElemType  *base;     //连续存储空间基址

      int  rear;        //队尾指针,指向队尾元素的位置

      int  length;      //队列的长度

}CyQueue;

//入队操作算法

Status  EnCyQueue(CyQueue &Q,  QElemType e) 

//带length域的循环顺序队列入队算法
{
      if (Q.length==MAXQSIZE)               //判队满

             return OVERFLOW;
     Q.rear=(Q.rear+1)%MAXQSIZE;     //队尾指针后移一位
     Q.base[Q.rear]=e;                               //e入队      

     Q.length++;                                         //队长加1
      return OK;
}//EnCyQueue

//出队操作算法

Status  DeCyQueue(CyQueue &Q,  QElemType &e)

//带length域的循环队列出队算法
{
       if (Q.length==0)

             return INFEASIBLE;     //判队空
       int front=(Q.rear-Q.length+1+MAXQSIZE)%MAXQSIZE;
       e=Q.base[front];
       Q.length--;

       return OK;
}//DeCyQueue

标签:算法,队列,length,C语言,入队,出队,rear
From: https://www.cnblogs.com/aal-izz-well-eureka/p/16890024.html

相关文章

  • C语言多行宏定义问题
    #defineportYIELD()\{\/*启动PENDSV中断*/\portNVIC_INT_CTRL_REG=portNVIC_PENDSVSET_BIT;\__dsb(portSY_FULL_READ_WRITE);\__isb(portSY......
  • 用C语言为python写C扩展
    calc.c#include<stdio.h>#include<Python.h>intadd(intx,inty){//C函数returnx+y;}staticPyObject*calc_add(PyObject*self,PyObject*args){......
  • 计算机等级考试二级C语言程序设计专项训练题——文件操作
    一.基础知识在C语言中,文件操作有四个步骤:①定义文件指针;②打开文件:文件指针指向磁盘文件缓冲区;③文件处理:文件读写操作;④关闭文件。文件打开函数如下:fp=fopen("......
  • 计算机等级考试二级C语言程序设计专项训练题——单链表
    一.程序填空题1.给定程序的主函数中,已给出由结构体构成的链表结点a、b、c,各结点的数据域中均存入字符,函数fun的功能是:将a、b、c三个结点链接成一个单向链表,并输出链表结点中......
  • 计算机等级考试二级C语言程序设计专项训练题——结构体
    一.程序填空题1.给定程序中,通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是:输出这位学生的信息。请在下划线处填入正确的内容并将下划线删除,......
  • 计算机等级考试二级C语言程序设计专项训练题——数组元素的删除
        数组元素a[i]的删除操作是使元素个数为n的数组(a[0],a[1],…,a[i-1],a[i],a[i+1],…,a[n-1])变成元素个数为n-1的数组(a[0],a[1],…,a[i-1],a[i+1],…,a[n-1]),由于数组在存储时......
  • 计算机等级考试二级C语言程序设计专项训练题——数组元素的移动
        在计算机等级考试二级C语言程序设计试题中,按要求对数组元素进行移动处理是一个重要的考点,有关数组元素移动的试题在历年考试试卷的程序填空题和程序设计题中经......
  • C语言指针重点
    指针指针与一维数组万能公式p[i]=*(p+i)=(i+p)=i[p]&p[i]==&((p+i))==p+i指针与二维数组二维数组万能公式:((p+i)+j)=a[i][j]对于一维数组而言,array+......
  • C语言数组越界和内存分配
    事情经过11月3日晚,今天遇到了一个神奇的现象,一个大小为10的数组可以容纳200个数据,直接震惊我了!今天发11月2日的参考代码,有一个同学给我看他的代码,大概是这样的intmain(......
  • c语言第二例题
    题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间......