我有一个包含整数数组的结构和一个显示队列末尾的int(“后”)。我有一些功能,例如add(),remove()和print()。
remove()函数应该向前移动所有项目(有效地删除arr [0],用arr [1]替换它,但它不起作用。
如果我的数组看起来像111,222,333,444并且我调用remove(),结果看起来像112,223,334等。
到目前为止,我能够解决所有经常令人沮丧的问题,主要与Java有关,但这个C问题我根本就不明白。我希望你的一些意见。感谢。
代码的相关部分:
void remove( struct queue *q )
{
int i;
system ("cls");
if ( q->rear > 0)
{
printf("\n\n%d has been removed\n\n", q->rank[0]);
q->rear--;
for ( i = 0; i < q->rear; i++)
{
q->rank[i] = q ->rank[i]++;
printf(rank[i])
}
q->rank[(q->rear +1)] = NULL;
}
else
{
printf("\n\nThe queue is empty\n\n");
}
}
答案 0 :(得分:0)
该行
q->rank[i] = q ->rank[i]++;
应该是
q->rank[i] = q ->rank[i+1];
否则你在循环中增加了两次。