Язык Си. Реализация списков с помощью цепочек динамических объектов (А.А. Вылиток - Лекции), страница 2
Описание файла
Файл "Язык Си. Реализация списков с помощью цепочек динамических объектов" внутри архива находится в папке "А.А. Вылиток - Лекции". PDF-файл из архива "А.А. Вылиток - Лекции", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 2 страницы из PDF
Для этого список удобнопредставлять себе как рекурсивную структуру данных: он либо пуст, либо состоит из«головы» (первый элемент) и «хвоста» (все, кроме первого). Хвост, в свою очередь,также является списком./* length: рекурсивно вычисляет длину списка ls;длина пустого списка равна нулю,длина непустого списка на единицу больше длины его хвостаint length ( list ls){return ( ls ) ? length ( ls−>next) + 1 : 0;}*/Вставка элемента/* insfront: вставляет элемент elem в начало списка, переданного черезуказатель lpvoid insfront ( elemtype elem, list * lp){list cur = ( list ) malloc ( sizeof ( list ) );cur−>elem = elem;cur−>next = * lp;* lp = cur;}*/Удаление спискаПосле того, как список в программе стал не нужен, следует удалить его,освободив память, занимаемую звеньями./* destruct : удаляет список, освобождая занимаемую им памятьvoid destruct ( list ls ){link q;while ( ls != NULL ) {q = ls ;ls = ls−>next;free (q);}}*/Задача.
Ввести последовательность символов (не более 80). Добавить в началопоследовательности символ 'a', если длина последовательности меньше 10 и в ней естьхотя бы один символ 'b'. Напечатать результат.Решение. Представим последовательность в виде списка, используя описанныевыше глобальную переменную lst и функции работы со списками.int main ( ){char buf [81];scanf ( "%80s", buf );lst = create ( buf );if ( length ( lst ) < 10 && count ( lst, 'b' ) )insfront ( 'a', &lst );print ( lst );destruct ( lst );}.