Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ponyatie_slozhnosti_algoritma.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
147.01 Кб
Скачать
  1. Понятие стека. Операции над стеком.

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

Операции:

- включение нового элемента

- исключение элемента

- определение текущего числа эл-ов в стеке

- очистка стека

- неразрушающее чтение из вершины стека

Реализация стека может быть выполнена на основе массива, кроме массива необходимо иметь переменную(указатель стека), адресующую вершину стека.

Вершине стека соответствует первый свободный элемент и стек растет в сторону увеличения адреса.

  1. Программная реализация стека на основе статического массива.

При представлении стека в статической памяти для стека выделяется память, как для вектора. В дескрипторе этого вектора кроме обычных для вектора параметров должен находиться также указатель стека - адрес вершины стека. Указатель стека может указывать либо на первый свободный элемент стека, либо на последний записанный в стек элемент. При занесении элемента в стек элемент записывается на место, определяемое указателем стека, затем указатель модифицируется таким образом, чтобы он указывал на следующий свободный элемент (если указатель указывает на последний записанный элемент, то сначала модифицируется указатель, а затем производится запись элемента). Модификация указателя состоит в прибавлении к нему или в вычитании из него единицы . Операция очистки стека сводится к записи в указатель стека начального значения - адреса начала выделенной области памяти.  Определение размера стека сводится к вычислению разности указателей: указателя стека и адреса начала области.  Указатель стека всегда указывает на первый свободный элемент. 

На уровне машинных команд существуют функции push и pop, в основе организации исполняемой среды один из 4 базовых регистров называется стековым и работает по стековому принципу, поэтому стек является основной структурой, используемой при организации компьютерных процессов.

  1. Использование стека при организации связи функций в языке Си и в ос.

  1. Понятие очереди. Операции над очередями.

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

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

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

Операции: включение, исключение, определение размера, очистка,

неразрушающее чтение.

  1. Кольцевая очередь. Деки.

Со временем указатель наконец достигнет верхней границы, однако, если опции включения чередовались с опциями исключения, то в начальной части окажется свободное место, для того чтобы эти места могли быть повторно использованы, очередь замыкается в кольцо: указатели (на начало и конец), достигнув конца выделенной памяти переключаются на ее начало – кольцевая очередь.

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

Операции над деком:

  • включение элемента справа;

  • включение элемента слева;

  • исключение элемента справа;

  • исключение элемента слева;

  • определение размера;

очистка.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]