Исполнители



Общие предписания:

1. Начать работу

2. Закончить работу

3. Сделать пустым

4. Пуст? <вых: да/нет>



Стек. Список предписаний:

5. Показать вершину стека <вых: элемент>

6. Удалить из стека

7. Положить в стек <вх: элемент>



Дек. Список предписаний:

5. Показать начало дека <вых: элемент>

6. Показать конец дека <вых: элемент>

7. Удалить из начала

8. Удалить из конца

9. Положить в начало <вх: элемент>

10. Положить в конец <вх: элемент>



Л1 список (линейный однонаправленный). СП:

5. Указатель в начало

6. Указатель в конце? <вых: да/нет>

7. Элемент за указателем <вых: элемент>

8. Удалить элемент за указателем

9. Добавить элемент за указателем <вх: элемент>



Л2 список (линейный двунаправленный). СП:

5. Указатель в начало

6. Указатель в конец

7. Указатель в начале? <вых: да/нет>

8. Указатель в конце? <вых: да/нет>

9. Элемент за указателем <вых: элемент>

10. Элемент до указателя <вых: элемент>

11. Удалить элемент за указателем

12. Удалить элемент до указателя

13. Добавить элемент за указателем <вх: элемент>

14. Добавить элемент до указателя <вх: элемент>



Очередь. СП:

5. Добавить в конец <вх: элемент>

6. Взять из начала <вых: элемент>



Реализация исполнителя на базе других исполнителей



Пример: Реализация очереди на базе дека

Предписание Добавить в конец <вх: элемент>

Дек. Добавить в конец <вх: элемент>

Конец предписания

Предписание Взять из начала <вых: элемент>

Дек. Показать начало <вых: элемент>

Дек. Удалить из начала

Конец предписания



Задачи

1. Реализовать очередь на базе Л1 списка

2. Реализовать Л2 список на базе двух стеков