polevoy_cpp_2012_spring_lecture_11
.pdfСтек (линейный список массив)
вершина
T& getTop()
{
assert(0 != m_pHead);
return m_pHead->m_data;
}
21.04.2012 |
cppNewb.ru |
31 |
АТД “очередь”
•динамическая структура данных
•упорядоченный набор элементов
•FIFO (First In First Out) – добавление
элементов с одного конца (хвост) и удаление с другого конца (голова)
21.04.2012 |
cppNewb.ru |
32 |
Очередь - операции
•создание
•уничтожение
•добавление элемента
•удаление элемента
•получение значение верхнего элемента
21.04.2012 |
cppNewb.ru |
33 |
Очередь (схема работы)
голова
getTop
push
хвост
21.04.2012 |
cppNewb.ru |
34 |
Очередь (интерфейс класса)
Queue()
Queue(const Queue& obj) ~Queue()
Queue& operator=(const Queue& rhs) void push(const T& obj)
void pop()
bool isEmpty() const T& getTop()
const T& getTop() const
или
T getTop()
21.04.2012 |
cppNewb.ru |
35 |
Очередь – реализация
•динамический массив (вставка и извлечение с концов)
•динамический массив (подвижные концы)
•список
21.04.2012 |
cppNewb.ru |
36 |
Очередь (подвижные концы)
iTail = (iTail + 1) % size; // push
iHead = (iHead + 1) % size; // pop
size – размер буфера
iHead
iTail
21.04.2012 |
cppNewb.ru |
37 |
Очередь с приоритетом
•<ключ, данные>
•порядок извлечения элементов определяется ключом, а не порядком добавления элементов в очередь
21.04.2012 |
cppNewb.ru |
38 |
Дэк (двусвязная очередь)
•добавление и извлечение элементов возможна с обоих концов
push_back
pop_back push_front pop_front
21.04.2012 |
cppNewb.ru |
39 |
Матрица (в математике)
Ма трица— математический объект, записываемый в виде прямоугольной таблицы чисел и допускающий алгебраические операции (сложение, вычитание, умножение)
между ним и другими подобными объектами.
Обычно матрицы представляются двумерными (прямоугольными) таблицами.
(0,0)
(1,0) (1,1)
21.04.2012 |
cppNewb.ru |
(2,0) |
40 |
|