int deQueue(SqQueue &sq,ElemType &x) //出队元素 x
{
SqQueue sq1;
int i=1;
int k,m;
scanf("%d",&k);//进队元素个数
scanf("%d",&m);
while(sq1.rear!=sq1.front)//判断循环条件 队不空时循环
{
if (i%m!=0)
i++;
else //即i%m=0
{
sq1.front=(sq1.front+1) % MaxSize; //队头循环进 1
x=sq1.data[sq1.front];
i=1;//出队之后重置i=1
}
}
return 1;
}
void expand_action()
{
ElemType t;
SqQueue sq1;
InitQueue(sq1);
EnQueue(sq1,'h');
EnQueue(sq1,'i');
EnQueue(sq1,'j');
EnQueue(sq1,'k');
EnQueue(sq1,'l');
EnQueue(sq1,'m'); //元素进队
while(!QueueEmpty(sq1)) //队不空循环
{
deQueue(sq1,t); //出队元素 e
printf("%c ",t); //输出元素 e
}
printf("\n销毁队列\n");
DestroyQueue(sq1);
}
以上是我的代码片 有很多地方想不太明白
他的思路有点不懂 为什么没到m值的人要出队呢 不应该是数到m出 然后重置i值继续循环吗?