2013-03-13 49 views
0

我有一个包含一个整数数组和一个int(“后方”)的结构,显示队列的结尾。我有一些功能,例如添加(),删除()和打印()。C - 删除int up up队列

的remove()函数应该向前移动的所有项目(有效删除ARR [0],通过改编[1]替换它,但它不能正常工作。

如果我的阵列看起来像111222333444和我打电话删除(),结果看起来像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

线

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

应该

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

否则你在循环递增我两次。

+0

它的工作原理和解释清楚,谢谢。我仍然不明白,一个int的某些部分如何与其他整数的部分混合起来,你能解释一下吗?即使我现在看到问题出在哪里,我仍然无法解释它产生的行为。 – user2065781 2013-03-13 14:01:21

+0

不太确定你的意思 - 你的示例输出看起来像是在处理字符,而不是ints,并且remove()函数正在做它应该做的事情 - 删除第一个字符并将所有其他字符移到左侧,包括逗号。 – 2013-03-13 14:07:02

+0

好了,现在。它不增加i,它增加了存储在arr [i]中的值... – user2065781 2013-03-14 23:53:30