Лабораторная работа, первый курс, работа со списками
На аукционе
Нужно выполнить следующее задание: Из входного потока вводится произвольное число строк. Длина каждой строки произвольна. Конец определяется концом файла. Сжать каждую строку, удалив из нее все символы, совпадающие с первым отличным от пробела символом исходной строки, а также лишние пробелы и символы табуляции. В новой строке все слова должны быть разделены только одним пробелом. Полученную строку вынести на экран. Разработать следующие варианты программы: а) каждая строка представлена массивом символом, доступ к элементам массива осуществляется с помощью указателей; при обработке строк использовать библиотечные функции () b) каждая строка представлена списком, первое поле элемента списка — символ строки; второе — указатель на следующий элемент списка или NULL в конце списка; список результата формировать, модифицируя исходный список. Примечания: 1. Ввод строк должен быть организован с помощью функции scanf() со спецификациями для ввода строк. Функцию getchar() или спецификацию %c в scanf() не использовать. 2. Логически законченные части алгоритма решения задачи должны быть оформлены отдельными функциями с параметрами (например, пропуск разделителей, создание списка, вывод списка и др.) 3. Целесообразно обработку строк оформить соответствующей функцией, тогда в функции main должны быть ввод строки, вызов функции обработки, вывод результата - в цикле, пока не закончится ввод, конец цикла - по достижении конца файла. 4. Для варианта b) все функции должны работать со списком; при вводе строки следует сразу создавать список.