ВУЗ:
Составители:
Рубрика:
- 24 -
другой объект, уже находящийся в данный момент на хранении. Пример –
транспортёрная лента для погрузки багажа. Чемодан, раньше других попавший
на ленту, раньше других сойдёт с неё.
В хранилищах типа «стек» (или LIFO
2
) каждый добавляемый объект не
может быть изъят позже, чем любой другой объект, уже находящийся в данный
момент на хранении. Примеры: стопка тарелок на полке буфета; магазин в
автоматическом оружии. В этих примерах соблюдается дисциплина LIFO, так
как взять можно только верхний предмет (тарелку или патрон), а добавить
новый объект можно, только положив его на верхний.
Потребность в использовании стека или очереди возникает при
программировании многих реальных процессов и ситуаций. Рассмотрим один
из способов организации очередей и стеков в программе. В качестве структуры
данных для хранения объектов (элементов) будем использовать список. В
случае очереди элементы добавляются в конец списка, а удаляются из его
начала. В случае стека элементы добавляются и удаляются с одного конца
списка. Такой способ представления стеков и очередей очень распространён,
так что на его основе можно дать более узкие определения данных понятий:
Очередь – это список, в который элементы всегда добавляются в конец, а
удаляются из начала.
Стек – это список, в котором все вставки и удаления выполняются на
одном конце, называемом вершиной стека.
Каждая из возможных реализаций списка на Паскале может быть
использована для представления очередей и стеков. Для стеков рассмотрим
вариант представления с помощью массивов, а для очередей – с помощью
динамических цепочек.
Представление стеков с помощью массивов
Опишем тип данных
stack и две процедуры: push(S,x) – положить в
стек S элемент x и pop(S,x) – взять с вершины стека S элемент, присвоив его
параметру x.
const
stacksize = … {максимальное число элементов, которые
могут одновременно находиться в стеке};
type
elemtype = … {подходящий для задачи тип элементов
стека};
stack = record
elems: array [1..stacksize] of elemtype;
top: integer {индекс вершины стека}
end;
var
S: stack; {стек}
2
LIFO означает “Last In – First Out”, т.е. «последним вошёл – первым вышел».
другой объект, уже находящийся в данный момент на хранении. Пример –
транспортёрная лента для погрузки багажа. Чемодан, раньше других попавший
на ленту, раньше других сойдёт с неё.
В хранилищах типа «стек» (или LIFO2) каждый добавляемый объект не
может быть изъят позже, чем любой другой объект, уже находящийся в данный
момент на хранении. Примеры: стопка тарелок на полке буфета; магазин в
автоматическом оружии. В этих примерах соблюдается дисциплина LIFO, так
как взять можно только верхний предмет (тарелку или патрон), а добавить
новый объект можно, только положив его на верхний.
Потребность в использовании стека или очереди возникает при
программировании многих реальных процессов и ситуаций. Рассмотрим один
из способов организации очередей и стеков в программе. В качестве структуры
данных для хранения объектов (элементов) будем использовать список. В
случае очереди элементы добавляются в конец списка, а удаляются из его
начала. В случае стека элементы добавляются и удаляются с одного конца
списка. Такой способ представления стеков и очередей очень распространён,
так что на его основе можно дать более узкие определения данных понятий:
Очередь – это список, в который элементы всегда добавляются в конец, а
удаляются из начала.
Стек – это список, в котором все вставки и удаления выполняются на
одном конце, называемом вершиной стека.
Каждая из возможных реализаций списка на Паскале может быть
использована для представления очередей и стеков. Для стеков рассмотрим
вариант представления с помощью массивов, а для очередей – с помощью
динамических цепочек.
Представление стеков с помощью массивов
Опишем тип данных stack и две процедуры: push(S,x) – положить в
стек S элемент x и pop(S,x) – взять с вершины стека S элемент, присвоив его
параметру x.
const
stacksize = … {максимальное число элементов, которые
могут одновременно находиться в стеке};
type
elemtype = … {подходящий для задачи тип элементов
стека};
stack = record
elems: array [1..stacksize] of elemtype;
top: integer {индекс вершины стека}
end;
var S: stack; {стек}
2
LIFO означает “Last In – First Out”, т.е. «последним вошёл – первым вышел».
- 24 -
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »
