Подскажите пожалуйста такое дело:
Код
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 - количества строк, а останавливался, когда просто нет строк, которые надо менять. Ну в меру возможного подскажите. Заранее благодарю