2017-04-25 51 views
0

我有500個幀,我已經將幀中的每個幀的長度存儲在一個數組中,因爲這些幀是按升序排列的。C中的詞典/ LUT實現

const char header_length = {23,34, 45, 12, 23,56,......,2,4}; 

這裏幀1的長度是23字節,幀2的長度是34字節。 現在,當我被請求帶有頭部4的幀時,我將不得不回覆帶有頭部7的幀,帶有頭部8的幀將需要帶有頭部60的回覆幀。該相互關係是常數,頭部4幀將總是回覆頭部7幀。所以我需要在這裏查找表格的實施。我打算使用多維數組來實現這一點。雖然有更好的方法來實現這個嗎?

+2

前兩句是有道理的。其餘的都是......好吧,完全沒有上下文。 –

+0

只需找到RB樹C的實現。 – dtech

+0

@EugeneSh。爲了簡化考慮,有4幀1,2,3,4與長度23,34,45 12.當我收到幀1我回復幀2,當我收到幀3我回復幀4,讓我們考慮其他幀現在回覆爲0。 LUT將是一個數組,其索引+ 1是幀編號。在位置1中,我將存儲長度​​和位置2的回覆幀。所以在我們的4幀的情況下,字典實現看起來像[23:2,34:0,45:4,12:0]。希望這可以簡化問題。 – CodeModeOn

回答

0

我回答是基於OP的評論,否則OP的問題沒有任何意義。

假定的幀的最大尺寸是由相當小的N限制,那麼它可能是更好的只是保持另一個陣列作爲以下,

const char header_length[] = {23,34, 45, 12, 23,56,......,2,4}; 
const int to_be_replied[N+1] = {...,0,...,2,...,0,...,4,...}; /* fill remaining */ 
/* here are their positions  @12 @23 @34 @45 */ 

和答覆時使用下列。

int frame_num, reply_frame_num; 
frame_num = get_frame_number(); /* some function */ 
reply_frame_num = to_be_replied[header_length[frame_num]];