2017-04-25 3 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. 고려해야 할 사항을 간소화하기 위해 길이가 23, 34, 45 인 4 개의 프레임 1,2,3,4가 있습니다. 프레임 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]];