C - 删除int messes up queue

时间:2013-03-13 13:40:31

标签: c integer queue

我有一个包含整数数组的结构和一个显示队列末尾的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");
    }
}             

1 个答案:

答案 0 :(得分:0)

该行

q->rank[i] = q ->rank[i]++;

应该是

q->rank[i] = q ->rank[i+1];

否则你在循环中增加了两次。