Здравствуйте.
Подскажите пожалуйста такое дело:
Код


void insert(char *s)
{
    list *curr;

    pthread_mutex_lock(&mut);
    curr = (list *)malloc(sizeof(list));
    if (!curr) {
     printf("malloc error.\n");
    } else {
     strncpy(curr->s, s, 80);
     curr->next = head;
     head = curr;
     count++;
    }
    pthread_mutex_unlock(&mut);
}
...
...
...


void vesicule()
{
    list *prev, *curr;
    int i;

    if (!head) {
     count = 0;
     return;
    }
    for (i = 0; i < count; i++) {
     prev = NULL;
     curr = head;
     while (curr && curr->next) {
         if (strcmp(curr->s, curr->next->s) > 0) {
          if (prev) {
              prev->next = curr->next;
          } else {
              head = head->next;
          }
          oins(curr->next, curr);
         }
             prev = curr;
         curr = curr->next;
     }
    }
    count = 0;
...
...
...
int oins(list *head, list *item)
{
    int i = 0;
    list *curr = head, *prev = NULL;

    if (!head)
     return (0);
    while (curr && (strcmp(item->s, curr->s) > 0)) {
     prev = curr;
     curr = curr->next;
     i++;
    }

    if (prev) {
     prev->next = item;
     item->next = curr;
    }
    return (i);
}





вот в функции vesicule , как изменить цикл так, чтобы обмен строк (функция oins) происходил не для всех i - количества строк, а останавливался, когда просто нет строк, которые надо менять. Ну в меру возможного подскажите. Заранее благодарю