假设循环队列中只设rear和length分别指示循环队列中的队尾位置和队列中所含元素的个数。试给出该循环队列的

大学 队列,指示,个数 已帮助 人

假设循环队列中只设rear和length分别指示循环队列中的队尾位置和队列中所含元素的个数。试给出该循环队列的队空条件和队满条件,并写出相应的入队(Add_Queue)算法和出队(Del_Queue)算法。

热搜:大循环和小循环分别指什么人体

答案解析

难度★★☆ 搜索
  • 定义该循环队列的存储结构:
       #define datatype char
       #define MAXSIZE 100  /*队列的最大容量*/
           typedef  struct
       {datatype data[MAXSIZE];  /*队列的存储空间*/
           int rear,length;
       }SEQQUEUE;
       SEQQUEUE*q;
       循环队列的队空条件是:q->length==0
       循环队列的队满条件是:q->length==MAXSIZE
       (1)入队
       void Add_Queue(SEQQUEUE*q,datatype x)
       {  if(q->length==MAXSIZE)/*队列满*/
               printf("Queue full");
           else
           {  q->rear=(q->rear+1)%MAXSIZE;
               q->data[q->rear]=x;
               q->length++;
           }
       }
       (2)出队
       dat atype Del_Queue(SEQQUEUE*q)
       {datatype x;
           int front;
           if(q->length==0)  /*队列为空*/
           {printf("Queue empty");
               x=NULL;)
           else
           { front=(MAXSIZE+q->rear-q->length+1)%MAXSIZE;/*计算头指针位置*/
               x=q->data[front];
               q->length--;)
           return x;
       }