Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

сиаод / 1-34 / 7. Очередь. Указатели

.pdf
Скачиваний:
71
Добавлен:
11.05.2015
Размер:
254.37 Кб
Скачать

7. Очередь. Абстрактный тип данных очередь. Реализация очереди с помощью указателей.

Очередь (первым пришел – первым вышел")– линейный последовательный список, в котором все включения производятся в конце списка (в хвосте очереди), а исключения – в начале (в голове очереди).

Для индикации хвоста и головы очереди организуются два указателя. f - указатель головного элемента, r - адресует первый свободный слот, следующий за хвостовым.

Основные операции над очередью – включение и исключение элемента.

Характерная особенность списковых структур данных–способность изменять число элементов. Память для элемента списковой структуры выделяется в момент, когда этот элемент появляется во время выполнения программы, а не во время её компиляции. Доступ к динамическим переменным осуществляется с помощью указателей (ссылок), которые становятся определенными после создания динамического элемента программы. Нужны два указателя на начало и конец очереди, BeginQначало, EndQконец. Указатель последнего элемента очереди должен быть равен NIL. Таким образом, для работы с очередью нужны три переменных типа "указатель".

Занесение 1-го э-та в очередь(создание очереди):

BeginQ:=nil

EndQ:=nil

1)new(p)выделяем память;

2)p^.info:=3 заполняем информ. поле;

3)p^.next:=nil добавленному эл-ту делаем указатель на nil; 4)beginq:=p; endq:=p

Добавить элемент в очередь:

1)new(p) выделяем память;

2)p^.info:=7 заполняем информ. поле;

3)p^.next:=nil добавленному эл-ту делаем указатель на nil; 4)endQ^.next:=p

5)endQ:=p

Удалить эл-т из очереди:

1)val:=BeginQ^.info - считываем информационное поле;

2)p:=BeginQ устанавливаем рабочий указатель на начало очереди;

3)BeginQ:=p^.next перемещаем указатель BeginQ на начало очереди;

4)disposе(p) освобождаем память;

При работе с динамической очередью снимается проблема переполнения очереди. Проверка на пустую очередь осуществляется сравнением F с NIL.