Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тюмгу / Лекции КБ ИБАС 1 курс 2 семестр / лекция2 Безопасность 2018.ppt
Скачиваний:
14
Добавлен:
08.12.2019
Размер:
698.88 Кб
Скачать

Работа с очередью

Для создания очереди и работы с ней необходимо иметь как минимум два указателя:

на начало очереди (идентификатор BegQ),

на конец очереди (идентификатор EndQ)

Кроме того, для освобождения памяти удаляемых элементов требуется дополнительный временный указатель Р.

Создание очереди

1. Исходное состояние:

BegQ

 

EndQ

P

NULL

 

 

 

NULL

 

 

 

?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

? 21

Работа с очередью

2. Выделение памяти под первый элемент очереди:

P

BegQ EndQ

NULL NULL info ?

next ?

?

22

Работа с очередью

3. Занесение информации в первый элемент очереди:

P

BegQ EndQ

NULL NULL

info

3

 

 

 

 

 

 

 

 

next

NULL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23

Работа с очередью

4. Установка указателей BegQ и EndQ на созданный первый элемент:

BegQ EndQ P

info 3 next NULL

24

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

1. Исходное состояние:

BegQ

 

EndQ

 

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

4

 

 

 

3

?

 

 

NULL

25

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

2. Выделение памяти под новый элемент и занесение в него информации:

BegQ

 

EndQ

 

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

4

3

5

NULL NULL

26

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

3. Установка связи между последним элементом очереди и новым, а также перемещение указателя конца очереди EndQ на новый элемент:

BegQ

 

EndQ

 

 

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

4

3

5

NULL

27

Удаление элемента из очереди

1. Исходное состояние:

 

BegQ

P

EndQ

 

?

2

4

3

5

NULL

28

Удаление элемента из очереди

2. Извлечение информации из удаляемого элемента в переменную Val и установка на него вспомогательного указателя Р:

 

 

 

BegQ

 

 

 

P

 

 

 

 

 

 

 

 

 

EndQ

 

 

Val

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

4

 

 

 

 

3

 

 

 

 

 

5

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NULL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

29

Удаление элемента из очереди

3. Перестановка указателя начала очереди BegQ на следующий элемент, используя значение поля next, которое хранится в первом элементе. После этого освобождается память начального элемента очереди, используя дополнительный указатель Р:

 

 

P

 

 

 

BegQ

 

 

 

 

 

 

 

 

 

EndQ

Val

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

4

 

 

 

 

3

 

 

 

 

 

5

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NULL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30