русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Очередь типа LIFO


Дата добавления: 2014-11-27; просмотров: 1062; Нарушение авторских прав


 

Это – наиболее простая очередь. Очередной элемент добавляется (или убирается) только в начало очереди.

Для создания и управления очередью типа LIFO достаточно иметь указатель на начало очереди и указатель на текущий элемент очереди. На бытовом уровне – это странная очередь, а в вычислительной технике она отображает работу стека. Новый объект (на него указывает текущий указатель) настраивает свой указатель на первый элемент существующей очереди, а указатель на первый элемент обновляемой очереди - настраивает на себя. Таким образом, пришедший последним – в очереди оказывается и выбирается из нее первым.

Рассмотрим алгоритм формирования очереди LIFO, считая, что элементы очереди (символы) вводятся с клавиатуры. В конце набирается символ ’*’. Он может быть таким.

1. Задать начальный элемент очереди.

2. Пока Информационный_элемент не равен ’*’ выполнить

Ввести очередной Информационный_элемент и

Поместить его в очередь.

3. Вывести Элементы очереди.

4. Закончить.

 

Уточним алгоритм, приняв во внимание, что в очереди типа LIFO добавление и выборка элементов осуществляется только в одном месте (в начале очереди), и получим.

 

1.1. Указатель_из_элемента_очереди = Nil(последний элемент).

1.2. Ввести Информационный_элемент.

2. Пока Информационный_элемент не равен ’*’ выполнить

2.1. Выделить память для Текущего_элемента.

2.2. Задать Информационный_элемент.

2.3. Связать Текущий_элемент со Следующим («хвостом» очереди).

2.4. Ввести Информационный_элемент.

3.1. Указатель_Текущего_элемента = Указатель_Следующего (начального элемента).

3.2. Пока Указатель_Текущего_элемента не Nil выполнить

3.2.1. Вывести Текущий_информационный_элемент;

3.2.2. Перейти к Следующему_элементу_очереди.

4. Закончить.

 

Программа для этого алгоритма будет иметь вид



 

Program Lifo;

Type

Ptr = ^El;

El = Record

Buk : Char; { Информационное поле }

Sl : Ptr; { Поле указателя }

End;

Var

Fp,Tp : Ptr; { Указатель на начало и текущий }

C : Char;

Begin

{ Начало формирования очереди }

Fp := Nil; {Указатель на начало очереди. Очередь пустая}

Writeln(’Введите элемент очереди’);

Readln(C);

{ Формирование очереди }

While C <> ’*’do

Begin

New(Tp); {Выделение памяти для нового элемента}

Tp^.Buk := C; {Запись информационной компоненты}

Tp^.Sl := Fp; {Запись в поле указателя нового элемента}

{ссылки на начало очереди – связь с остальной очередью}

Fp := Tp; { Теперь Fp, как и Tp, указывает }

{ на начало очереди }

Writeln(’ Введите элемент очереди’);

Readln(C);

End;

{В этом месте Fp и Tp - ссылки на начало очереди}

{ Вывод очереди с ее начала (головы) }

WriteLn(’Вот такая очередь:’);

While Tp <> Nil do

Begin

Write (Tp^.Buk:2); {Вывод информационного поля элемента}

Tp := Tp^.Sl; { Переход к следующему элементу }

End;

WriteLn;

Writeln(’Конец работы. Нажмите ENTER’);

Readln;

End.

 
 

На рис. 2.18 показана последовательность формирования очереди LIFO на примере двух элементов в соответствии с текстом программы.

 



<== предыдущая лекция | следующая лекция ==>
Использование указателей. Списки | Очередь FIFO


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 4.738 сек.