Басецкий Олег Олегович МГТУ им. Н.Э.Баумана Есть запись, строки. Каждая строка – число. Например, 4 4.5 21.543 1 124.12 Нужно: 1. Прочитать запись в двунаправленную очередь Двунаправленная очередь – структура данных, для которой доступны операции: •Добавить число в начало очереди; •Добавить число в конец очереди; •Изъять число из начала очереди; •Изъять число из конца очереди 2 После загрузки посчитать длину полученной очереди, используя только доступные для нее операции и ограниченное число вспомогательной памяти (переменных).* *. В частности, запрещается использовать вторую очередь в качестве переменной. В качестве операции сравнения элементов может использоваться только операция сравнения чисел. После расчета очередь должна остаться в первоначальном виде и естественно, что структура очереди должна быть реализована в общем виде, без ориентации на алгоритм. Сам алгоритм должен быть реализован без использования какихлибо особенностей выбранного языка программирования. 1.Чтение в очередь Основным преимуществом двунаправленной очереди, является возможность записи чисел как в левый так и правый концы очереди. Схема двунаправленной очереди Вставка элемента с конца очереди: R←R+1; X[R]←Y //R – указатель ячейки правого конца, X[] - элемент очереди, Y — соответсвующий элемент записи. В случае, если заполнение очереди происходит постоянно, то, во избежание переполнения памяти, неоходимо работать с M узлами, образующих колько (т.е. После X[M] следует X[1]): Вставка в очередь: X←Y: Если R=M, то R←1 в противном случае R←R+1 Если R=F //то избыток элементов F —ячейка, перед начальным элементом очереди. X[R]←Y. 2. Длина очереди Блок-схема алгоритма определения длины очереди Словесное описание алгоритма и пояснение блок-схемы: 1) Чтение осуществляется по алгоритму, приведенному выше в части 1. 2) M — маркер, является суммой X[R] и X[R-1] (крайнего правого и предпоследнего элементов исходной очереди). 3) Счетчик цикла i – длина очереди 4) операцией изъять из начала и операцией добавить в конец получаем R=L (для n=i-1 левых элементов), где L – левый элемент очереди.