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

polevoy_cpp_2012_spring_lecture_11

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

Уничтожение списка

 

pHead

 

pD

0

while (0 != pHead)

{

pD = pHead;

pHead = pHead->m_pNext; delete pD;

}

21.04.2012

cppNewb.ru

21

Кольцевой список

• циклический (замкнутый) список

pHead

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21.04.2012

 

 

 

cppNewb.ru

22

Плюсы списков

простое динамическое добавление и удаление элементов

размер ограничен только объёмом

памяти и разрядностью указателей

элементы не перемещаются в памяти

21.04.2012

cppNewb.ru

23

Минусы списков

накладные расходы памяти на связи

“ долгое” обращение к элементу по индексу

“долгое” выделение узла

элементы списка могут быть расположены в памяти разреженно (фрагментация памяти, плохо кэшируется)

21.04.2012

cppNewb.ru

24

АТД “cтек”

динамическая структура данных

упорядоченный набор элементов

LIFO (Last In First Out) – добавление и

удаление элементов с одного конца,

называемого вершиной стека

21.04.2012

cppNewb.ru

25

Стек (схема работы)

вершина push

getTop

pop

21.04.2012

cppNewb.ru

26

Стек – операции

создание

уничтожение

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

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

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

21.04.2012

cppNewb.ru

27

Стек (интерфейс класса)

Stack()

Stack(const Stack& obj) ~Stack()

Stack& operator=(const Stack& rhs) void push(const T& obj)

void pop()

bool isEmpty() const T& getTop()

const T& getTop() const

или

T getTop()

21.04.2012

cppNewb.ru

28

Стек – реализация

динамически массив

линейный список

21.04.2012

cppNewb.ru

29

Стек (динамический массив)

вершина

T& getTop()

{

size_t i(size(s.arr) - 1); assert(i >= 0);

return m_data.at(i);

}

21.04.2012

cppNewb.ru

30

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