2011-04-25 236 views
0

我試圖創建一個priority queue使用隊列數組,每個數組的索引是一個優先級。我嘗試以下溶液,優先級隊列C

隊列數據類型包含數組LLIST,

Queue *q_create(int size) 
{ 
struct queue *p; 
struct q_head *h; 
int i; 

if ((p = (struct queue *)malloc(sizeof(struct queue))) != NULL) { 
    p->size = size; 
    for (i = 0; i < PRIODIFF; i++) { 
     h = &(p->llist[i]); 
     h->head = NULL; 
     h->tail = NULL; 
    } 
} 
return p; 
} 

我感到困惑由線:h = &(p->llist[i]); 我想,llist[i] = h。 這是用C編寫它的另一種方式嗎?我正在讀它作爲h = the address of llist[i]。 這是正確的嗎?

感謝

回答

2

我讀它爲h = LLIST的地址[i]是正確的嗎?

是的。

1

是的,您應該閱讀,將p->llist[i]的地址分配給h。這與llist[i] = h不一樣。

該代碼使用h作爲簡寫,以避免必須爲後面兩行輸入兩次p->llist[i]