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

лекции программирование / polevoy_cpp_2012_spring_lecture_11

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

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

 

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