2011-06-03 71 views
0

我在使用huffman方法插入優先隊列的方法。不過,我不斷收到同樣的錯誤:優先隊列插入

 prioque.c:46: error: expected ")" before "prioque_ref" 

我的結構是:

typedef struct prioque *prioque_ref; 
struct prioque { 
    int dim; 
    int last; 
    prioque_item *array; 
    cmpfn_prioque cmpfn; 
}; 

我的代碼有問題:

void insert_prioque (prioque prioque_ref *queue, prioque_item item) { 
    assert (queue->last < queue->dim -1); 

    ++queue->last; 
    queue->array[queue->last] = item; 
    int curr = last; 

    while (curr != ROOT) { 
     int parent = PARENT(curr); 
     int *parentptr = &queue->array[parent]; 
     int *curptr = &queue->array[curr]; 

     if (*parentptr > *currptr) 
      break; 

     int tmp = *currptr; 
     *currptr = *parentptr; 
     *parentptr = tmp; 
     curr = parent; 
    } 

    DEBUGF ('p', "queue=%p, item=%p\n", queue, item); 
} 

我到底錯在這裏幹什麼?

+0

所以,你說你沒有',''後typedef結構prioque * prioque_ref'?如果是這樣,那麼這是你的第一個錯誤。如果你確實有';'那麼請發送真實代碼*,而不是「我認爲正確的東西」。 – AnT 2011-06-03 21:51:21

+0

你已經有幾個很好的答案了,但爲了將來的參考,如果你告訴我們哪一行是第46行,我們可以更容易地提供幫助。 – 2011-06-03 21:51:49

+0

對不起!第46行是我的插入方法的第一行,我一定會牢記以備將來參考,並感謝大家的幫助。 – KufNayr 2011-06-03 22:02:16

回答

4

你已經做了的typedef prioque *

void insert_prioque (prioque prioque_ref *queue, prioque_item item) 
         //^complaining about this space 

所以,它應該是 -

void insert_prioque (prioque_ref queue, prioque_item item) { /* .... */ } 
+0

完美!這個和其他幾個混雜的鑷子似乎是訣竅。非常感謝! – KufNayr 2011-06-03 21:58:10

+0

@KufNayr - @Karl建議,也可以通過代碼中的評論來說明特定行的存在位置。很高興它工作:) – Mahesh 2011-06-03 22:00:40