2013-03-13 48 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