Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

194 Глава 5. Стеки, очереди и Deques

5.1 Стеки

Стек - контейнер объектов, которые вставлены и удалены согласно принципу метода «последним пришел - первым вышел» (LIFO). Объекты могут быть вставлены в стек в любое время, но только последний раз вставленный (то есть, «в последний раз») объект может быть удален в любое время. Имя «стек» получено из метафоры стека пластин весной - загруженный, фармацевт пластины кафетерия. В этом случае фундаментальные операции включают «подталкивание» и «сование» пластин на стеке. Когда нам нужна новая пластина от фармацевта, мы «суем» главную пластину от стека, и когда мы добавляем пластину, мы «отталкиваем» его на стеке, чтобы стать новой главной пластиной. Возможно, еще более забавная метафора была бы PEZ R фармацевт леденца, который хранит леденцы монетного двора в пружинном контейнере, который «сует» самый верхний леденец в стеке, когда вершина фармацевта снята. (См. рисунок 5.1.) Стеки - фундаментальная структура данных. Они используются во многих заявлениях, включая следующий.

Пример 5.1: интернет-веб-браузеры хранят адреса недавно посещенных мест на стеке. Каждый раз пользователь посещает новое место, что адрес места «выдвинут» на стек адресов. Браузер тогда позволяет пользователю «трещать» назад к ранее посещаемым местам, используя «заднюю» кнопку.

Пример 5.2: Редакторы текста обычно обеспечивают «отменить» механизм, который отменяет пере - операции по редактированию цента и возвращается в бывшие государства документа. Это отменяет oper-ation, может быть достигнут, держа текстовые изменения в стеке.

Рисунок 5.1: схематический рисунок PEZ R фармацевт; физическое внедрение стека ADT. (PEZ R - зарегистрированная торговая марка PEZ Candy, Inc.),

5.1. Стеки 195

5.1.1 Тип данных резюме стека

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

продвиньтесь (e): элемент Вставки e наверху стека.

популярность (): Удалите главный элемент из стека; ошибка происходит

если стек пуст.

вершина (): Возвратите ссылку на главный элемент на стеке, с -

удаляя его; ошибка происходит, если стек пуст.

Кроме того, давайте также определим следующие функции поддержки:

размер (): Возвратите ряд элементов в стеке.

пустой (): Возвратитесь верный, если стек пустой и ложный иначе.

Пример 5.3: следующая таблица показывает ряд операций по стеку и их эффектов на первоначально пустой стек целых чисел.

Операция

Продукция

Содержание стека

продвиньтесь (5)

-

(5)

продвиньтесь (3)

-

(5, 3)

популярность ()

-

(5)

продвиньтесь (7)

-

(5, 7)

популярность ()

-

(5)

вершина ()

5

(5)

популярность ()

-

()

популярность ()

«ошибка»

()

вершина ()

«ошибка»

()

пустой ()

верный

()

продвиньтесь (9)

-

(9)

продвиньтесь (7)

-

(9, 7)

продвиньтесь (3)

-

(9, 7, 3)

продвиньтесь (5)

-

(9, 7, 3, 5)

размер ()

4

(9, 7, 3, 5)

популярность ()

-

(9, 7, 3)

продвиньтесь (8)

-

(9, 7, 3, 8)

популярность ()

-

(9, 7, 3)

вершина ()

3

(9, 7, 3)