2012-05-09 26 views
0

我想用動態數組創建隊列,問題是當我測試int main()中的q.rear值(以後插入數據)時,它不再是-1。我做錯了哪一部分?排隊不正確地返回後方值?

這裏是一塊代碼:

#include <stdio.h> 
#include <conio2.h> 
#include <stdlib.h> 

typedef struct{ 
    int *data; 
    int front,rear,max; 
    }tqueue; 
tqueue create(int size) 
{ 
    tqueue q; 
    q.data=(int *)malloc(size*sizeof(int));   
    q.front=0; 
    q.rear=-1; 
    q.max=size; 
    return q; 
} 
int main() 
{ 
    tqueue q; 
    int size=4; 
    create(size); 
    printf("\n%d",q.rear); 
    getch(); 
    return 0; 
} 
+0

我的錯,謝謝所有:) – mollyeah

回答

0

您沒有將create()的結果分配給q。以下呼叫create()和丟棄結果,在其原來的狀態離開q

create(size); 

要修復,替換爲上述行:

q = create(size); 
0

你有兩個不同的tqueue S,都被稱爲q。你初始化的一個(你在create中創建的那個)和一個(你在main中創建的那個)你不需要。

0

你忘了指定的返回值:

q = create(size);