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

polevoi_cpp_2013_spring_lecture_05

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

.h не должен содержать

определения обычных функций

определения данных

определения агрегатов

неименованные пространства имен

30.03.2013

21

Использование заголовочных файлов в проектах

включайте все необходимое

минимизируйте число включений

включайте заголовочные файлы в порядке увеличения общности

локальные

общеупотребительные

стандартные

разделяйте группы заголовков

30.03.2013

22

Бинарный интерфейс компонент

соглашение о параметрах вызова

Си-соглашение

extern “C”

{

// source code

}

30.03.2013

23

АТД “cтек”

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

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

LIFO (Last In First Out) – добавление и удаление элементов с одного конца,

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

30.03.2013

24

Стек

вершина push

getTop

pop

isEmpty

30.03.2013

25

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

создание

уничтожение

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

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

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

30.03.2013

26

Стек – интерфейс

create()

destroy()

bool isEmpty()

push(T)

pop()

T getTop()

30.03.2013

27

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

пример: struct Stack;

void create(Stack& stack); void destroy(Stack& stack);

bool isEmpty(const Stack& stack)

void push(Stack& stack, const T& val) void pop(Stack& stack);

const T& getTop(const Stack& stack)

30.03.2013

28

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

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

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

30.03.2013

29

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

вершина

const T& getTop(const St& s)

{

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

return at(s.arr, i);

}

30.03.2013

30