
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.