猿问

我想问下循环队列,此段语句是什么意思?

# define maxsize 20
typedef struct sqqueue
{ DataType data [maxisize];
int front ,rear;
} SaQueueTp;
SqQueueTp sq;

此段语句是什么意思?
sq.rear=(sq.rear+1)%maxsize;
sq.data{sq.rear]=x;

这两句我都不是很理解。 小弟C语言知识薄弱,还请大侠讲解,谢谢!

开心每一天1111
浏览 231回答 1
1回答

开满天机

这是用数组来模拟循环队列,队列的性质是先进先出。该结构体中的data代表队列,data数组中的一个元素代表队列中的一个元素。第一句sq.rear=(sq.rear+1)%maxsize;,rear表示后一个节点的编号,正常情况下,后一个节点编号都是比当前节点的编号大1,所以取sq.rear+1,而当到了最后一个节点,由于是循环队列,故它的下一个节点是第一个节点,其编号变为0,综合到一起,就可以通过(sq.rear+1)%maxsize这样一个表达式来表示下一个节点的编号。第二句中有个小错误,左括号为方括号,而不是花括号。其含义为对队列的第rear个元素赋值。
随时随地看视频慕课网APP
我要回答