Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

polevoi_cpp_2013_spring_lecture_05

.pdf
Скачиваний:
12
Добавлен:
20.04.2015
Размер:
121 Кб
Скачать
☆

Стек (линейный список массив)

вершина

const T& getTop(const St& s)

{

assert(0 != s.m_pHead); return s.m_pHead->m_data;

}

30.03.2013

31

Очередь - операции

•создание

•уничтожение

•добавление элемента

•удаление элемента

•получение значение верхнего элемента

30.03.2013

32

Очередь

голова

pop getTop

push

хвост

isEmpty

30.03.2013

33

Очередь – интерфейс

•create()

•destroy()

•bool isEmpty()

•push(T)

•pop()

•T getTop()

30.03.2013

34

Очередь (в стиле Си)

пример: struct Queue;

bool create(Queue& queue); bool destroy(Queue& queue);

bool isEmpty(const Queue& queue)

bool push(Queue& queue, const T& val) bool pop(Queue& queue);

T getTop(const Queue& queue)

30.03.2013

35

Очередь – реализация

•динамический массив (вставка и извлечение с концов)

•динамический массив (подвижные концы)

•список

30.03.2013

36

Очередь (подвижные концы)

iTail = (iTail + 1) % size; // push

iHead = (iHead + 1) % size; // pop

size – размер буфера

iHead

iTail

30.03.2013

37

Очередь с приоритетом

•<ключ, данные>

•порядок извлечения элементов определяется ключом, а не порядком добавления элементов в очередь

30.03.2013

38

Дэк (двусвязная очередь)

•добавление и извлечение элементов возможна с обоих концов

30.03.2013

39

Сортировка очередью

•наполнить очередь с приоритетом сортируемыми элементами

•извлечь упорядоченные элементы

30.03.2013

40