假设循环队列中只设rear和length来分别指示队尾元素和队中元素的个数,试给出半判断此循环队列的队满条件

假设循环队列中只设rear和length来分别指示队尾元素和队中元素的个数,试给出半判断此循环队列的队满条件
并写出相应的入队和出队算法
bitfarmer 1年前 已收到1个回答 举报

梦里花落是多少 幼苗

共回答了22个问题采纳率:86.4% 举报

假设循环队列的长度为MAX,
判断循环队列为满的基本条件是(rear + 1)% MAX == front
而front =(rear - length + MAX)%MAX
综合得到判断循环队列为满的条件:
(rear + 1)% MAX ==(rear - length + MAX)%MAX

1年前 追问

9

bitfarmer 举报

可以写一下相应的入队和出对算法吗

举报 梦里花落是多少

/* 循环队列结构 */ typedef int ElemType; typedef struct Queue { ElemType data; struct Queue *rear; struct Queue length; }Queue; /* 将data入循环队列 */ void EnQueue(Queue *Q, ElemType data) { if((Q->rear+1)%MAX == (Q->rear-Q->length+MAX)%MAX) return; Q->base[Q->rear] = data; Q->rear = (Q->rear+1)%MAX; Q->length++; } /* 出队列,结果存*data中 */ void DeQueue(Queue *Q, ElemType *data) { if(Q->rear == (Q->rear-Q->length+MAX)%MAX) return; *data = Q->base[(Q->rear-Q->length+MAX)%MAX]; Q->length--; }
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.023 s. - webmaster@yulucn.com