2012-12-10 2 views
0

링크 된 목록의 정렬 된 삽입에 대해 하나의 반복 함수를 구현하는 데 어려움이 있습니다. 나는 이전에 insert() 함수가 호출 될 때 훨씬 더 쉽게 재귀와 그 짓을하지만, 여기에 내가 (l->data < data) 조건을 구현하는 방법에 조금 혼란 스러워요 :링크 된 목록을 사용하여 정렬 된 삽입

typedef struct E_Type * List; 

struct E_Type 
{ 
    int data; 
    struct E_Type* next; 
}; 

및 기능 :

insert(List & l, int data){ 
    if (l == 0 || l->data > data){ 
    List new_list = new E_Type; 
    new_list->data = data; 
    new_list->next = l; 
    l = new_list; 
    } 
    else if (l->data < data){ 
    List new_list = new E_Type; 
    new_list->data = data; 
    new_list->next = l; //i am shooting in the dark with this one 
    l = new_list; 
    } 
} 

답변

2

나는 이것을 코드화하지 않을 것이지만, 힌트를 줄 것이다.

  1. 삽입 요소는 새로운 헤드된다 :

    근본적으로 두 가지 경우가있다. 이 경우 l을 업데이트해야합니다.

  2. 삽입되는 요소가 이 아니고이 새 머리가됩니다. 이 경우 루프가 필요합니다.

내가 너라면 필자는 펜과 종이를 사용하여 두 경우 모두 처리 할 것입니다.

+0

또는 현명하게 구현하고 더미 헤드를 사용하면 코드를 크게 단순화 할 수 있습니다. – Voo

+0

감사합니다. 이제이 제안을 구현하려고합니다. – EmilDo

관련 문제