2013-02-14 2 views
0
void insert(struct EMP* emp[]) 
{ 
    struct EMP* previous = NULL; 
    struct EMP* current = top; 

    int i; 
    int j; 

    previous = current; 
    current = current -> next; 

    for(i = 1; i < numEmps; i++) 
    { 
     j = i; 
     while(j > 0 && previous -> id > current -> id) 
     { 
      previous = current; 
      j--; 
     } 

     current = current -> next; 
    } 
} 

매개 변수는 정렬되지 않은 배열이므로 삽입 정렬을 사용하여 정렬하려고합니다. 내가 가지고있는 문제는 링크 된 목록이 필요하다는 것입니다. 어떤 제안? 위의 내 기존의 삽입 정렬 기능은 작동하지 않습니다.C - 정렬되지 않은 배열로 연결된 목록을 사용한 삽입 정렬

+4

물론 작동하지 않습니다. 여전히'NULL' 인 동안'previous'를 사용합니다. –

+0

나는 이전 = 현재 = 정상이므로 아무런 문제가 없다고 생각합니다. – Elemental

+0

나는 이전이 현재와 같고 다음이 현재가 다음과 같음을 추가했다 .... 빌드되고 실행되지만 아무것도 변경되지 않는다. 어떤 아이디어? –

답변

0

삽입 정렬 알고리즘을 자세히 살펴야한다고 생각합니다. 본질적으로 요소를 추가하는 새로운 대상 목록이 필요합니다 (특히 두 번째 목록을 작성할 때 올바른 위치에 요소를 삽입하십시오). 따라서 오해의 핵심은 이것이 단일 목록에서 '제자리에서'수행 될 수 있다는 생각입니다.

목록에서 임의의 지점에 요소를 효율적으로 삽입 할 수 있어야하므로이 두 번째 목록을 링크 된 목록으로 구현하는 것이 더 쉽고 쉬울 것입니다.

관련 문제