0

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

1 回答 1

0

线

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

应该

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

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

于 2013-03-13T13:44:58.207 回答