if(!tmp) return 1; //Если память не выделилась, то выход
if(!head){//Если создается первый элемент в списке
//Инициализация указателя на следующий элемент
tmp->next = NULL; //нулевым значением
head = tmp; //Установка указателя на начало списка
//Если новый элемент при соблюдении условия сортировки
//необходимо вставить перед первым элементом списка
}else if(head->value > value){
//Установка указателя на следующий элемент нового
tmp->next = head; //элемента на начало списка
head = tmp; //Установка указателя на начало списка
//Иначе, поиск места, куда необходимо вставить новый
//новый элемент не нарушая условие сортировки
}else{
ELEMENT *cur = head; //Поиск места
while((cur->next)&&(cur->next->value < value))
cur = cur->next;
tmp->next = cur->next; //Вставка нового элемента в
cur->next = tmp; //найденную позицию
}
tmp->value = value; //Запись значения в новый элемент
return 0; //Успешное завершение
}
/* ----------- Функция удаления всего списка ----------- */
void Destroy(void)
{
while(head){ //Пока список не пуст
//Установка локального указателя на начало списка
ELEMENT *tmp = head;
//Установка указателя на начало списка на следующий
head = head->next; //элемент
free(tmp); //Освобождение динамической памяти
}
}
Задача 9.2: Дан текстовый файл, содержащий вещественные числа (имя файла передается в параметрах командной строки). Если положительных чисел в файле больше (или равно) чем отрицательных, то удалить все отрицательные числа. В противном случае - все положительные. Оставшиеся значения упорядочить по возрастанию и записать в исходный файл (файл переписывается заново). При реализации использовать двунаправленный список.