1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Дан текстовый файл. Строки этого файла расположить в порядке убывания их длины и удалить пять самых коротких из них. Для размещения в памяти содержимого файлов использовать односвязные линейные списки.
Предполагаю заносить каждую строку в одно поле списка, но не знаю, как это сделать именно со строкой и сколько выделять памяти.
объясните пожалуйста некоторые моменты: 1) о сортировке
for(L = *first; L -> next; L = L -> next)
for(p = L -> next; p; p = p -> next)
здесь L = *first - голова, p = L -> next - элемент, следующий за головой, а что подразумевается под L -> next и p? Как я понимаю, операциями L = L -> next и p = p -> next мы переходим к следующим элементам,которые нужно сравнивать, да?
2)почему мы ставим здесь взятие адреса?
sort(&root);
3) здесь мы печатаем отсортированный по возрастанию длины список:
for(p = root; p; p = p -> next) printf("%s\n", p -> number);
печатаем начиная с головы p = root и заканчивая р, в процессе передвигаясь от головы к концу списка, так? тогда р - у нас последний элемент списка? или тут другое?
4) момент с удалением 5-ти первых:
for(p = root; p && n < 5; n++)
почему у нас тут такое условие завершения цикла?
5) и последнее - почему при печати оставшегося списка мы использует таокй цикл
for(p = root; p; )
?
Объясните пожалуйста!
Добавлено через 19 мин. 2) вопрос отпал. а вот с остальным - объясните пожалуйста.