Лекция 11. Терновой Максим Юрьевич к.т.н., доцент кафедры информационнотелекоммуникационных

Save this PDF as:
 WORD  PNG  TXT  JPG

Размер: px
Начинать показ со страницы:

Download "Лекция 11. Терновой Максим Юрьевич к.т.н., доцент кафедры информационнотелекоммуникационных"

Транскрипт

1 Технологии программирования Зима-Весна Лекция 11 Терновой Максим Юрьевич к.т.н., доцент кафедры информационнотелекоммуникационных сетей

2 Вопросы, рассматриваемые на лекции 1. Динамические структуры данных: Стек 2. Очередь 3. Кольцевая очередь 4. Очередь с приоритетами 5. Связанные списки. Односвязный список 6. Связанные списки. Двусвязный список

3 1. Динамические структуры данных

4 Динамические структуры данных Динамические структуры данных-- это структуры, способные при необходимости выделять память под новые элементы или удалять выделенную память для ненужных элементов "на ходу". Существует несколько видов динамических структур данных: стеки, очереди, связанные списки, двоичные деревья и т.д. Каждая из них обладает определенными достоинствами и недостатками, поэтому выбор одной из них зависит от решаемой программистом задачи

5 Динамические структуры данных: Стек Стек (обычно реализуется с помощью массива) реализует концепцию LIFO (Last In First Out), то есть элемент который добавили в стек последним выйдет из него первым

6 Динамические структуры данных: Стек

7 Динамические структуры данных: Стек Стек характеризуется базовым адресом и указателем на вершину стека (Top). Под базовым адресом понимается начальный адрес памяти, в которой размещается стек (адрес, естественно, выбран случайным образом). Top - это указатель на самый верхний элемент стека. Все операции, связанные с добавлением элементов в стек или удалением элементов из стека, ориентируются на этот указатель.

8 Динамические структуры данных: Стек Динамическая структура Стек чаще всего используется при синтаксическом анализе всевозможных выражений (пример анализа корректности расстановки различных скобок, приведенный далее). Примечание: Каждое написанное вами приложение имеет собственный стек (на текущий момент обучения он существует в единственном экземпляре). В этой области памяти компилятор создает локальные переменные, через стек происходит передача параметров в функцию.

9 Практический пример работы со стеком Контроль расстановки скобок Данный пример демонстрирует работу стека на примере разбора арифметического выражения. Задачей разбора является контроль за расстановкой и порядком следования скобок.

10 Пример(1). Интерфейс класса "Стек" // Предотвращение повторной компиляции кода #ifndef STACK #define STACK class Stack { enum {EMPTY = -1, FULL = 999}; // Нижняя и верхняя границы стека char st[full + 1]; // Массив для хранения данных int top; // Указатель на вершину стека public: Stack(); // Конструктор void Push(char c); // Добавление элемента char Pop(); // Выталкивание элемента void Clear(); // Очистка стека bool IsEmpty(); // Проверка существования элементов в стеке bool IsFull(); // Проверка на переполнение стека int GetCount(); // Количество элементов в стеке }; #endif // STACK

11 Пример(2). Реализация функций класса "Стек" #include "stack.h" Stack::Stack() { // Изначально стек пуст top = EMPTY; } void Stack::Clear() { /*Эффективная "очистка" стека (данные в массиве все еще существуют, но функции класса, ориентированные на работу с вершиной стека, будут их игнорировать) */ top = EMPTY; }

12 Пример(3). Реализация функций класса "Стек" bool Stack::IsEmpty() { // Пуст? return top == EMPTY; } bool Stack::IsFull() { // Полон? return top == FULL; } int Stack::GetCount() { // Количество присутствующих в стеке элементов return top + 1; } void Stack::Push(char c) { /* Если в стеке есть место, то увеличиваем указатель на вершину стека и вставляем новый элемент*/ if(!isfull()) st[++top] = c; }

13 Пример(4). Реализация функций класса "Стек" char Stack::Pop() { /* Если в стеке есть элементы, то возвращаем верхний и уменьшаем указатель на вершину стека*/ if(!isempty()) return st[top--]; else // Если в стеке элементов нет return 0; }

14 Пример(5). Использование класса "Стек" /* Функция, осуществляющая контроль за правильностью расстановки скобок */ bool Brackets(char * str) { // Объект класса "Стек" Stack st; // Типы скобок, за которыми ведется контроль char left_bracket[] = "([{"; char right_bracket[] = ")]}"; char * p = 0; // Длина выражения int len = strlen(str);

15 Пример(6). Использование класса "Стек" for(int i = 0; i < len; i++) { // Поиск символа в строке p = strchr(left_bracket, str[i]); if(p!= 0) st.push(str[i]); // Левая скобка else { p = strchr(right_bracket, str[i]); // Правая скобка if(p!= 0) { int pos = p - right_bracket; // Позиция элемента в массиве правых скобок char bracket = st.pop(); // Извлечение последнего внесенного элемента

16 Пример(7). Использование класса "Стек" if(bracket == 0) // Стек пуст { cout << str << endl; for(int j = 0; j < i; j++) cout << " "; cout << "^" << endl; // Отсутствует соответствующая левая скобка cout << "Error: left bracket missed" << endl; cout << "Position: " << i + 1 << endl; return 0; }

17 Пример(8). Использование класса "Стек" // Поиск извлеченной скобки в массиве левых скобок p = strchr(left_bracket, bracket); if(pos!= p - left_bracket) // Скобки не совпадают { cout << str << endl; for(int j = 0; j < i; j++) cout << " "; cout << "^" << endl; // Несоответствие открывающей и закрывающей скобок cout << "Error: incorrect bracket order" << endl; cout << "Position: " << i + 1 << endl; return 0; } } } }

18 Пример(9). Использование класса "Стек" if(!st.isempty()) // Стек не пуст { cout << str << endl; for(int j = 0; j < i; j++) cout << " "; cout << "^" << endl; // В стеке остались "лишние" скобки cout << "Error: right bracket missed" << endl; cout << "Position: " << i + 1 << endl; return 0; } return 1; }

19 Пример(10). Использование класса "Стек" void main() { char str[200]; // Ввод выражения, например, 2 * (2 + 2) cout << "Input expression: "; cin.getline(str, 200); if(!brackets(str)) { // Действия в случае ошибки } else { // Действия в случае корректности выражения } }

20 2. Очередь

21 Динамические структуры данных: Очередь Простая очередь представляет концепцию FIFO (First In First Out), то есть элемент который добавили в очередь первым, первым ее и покинет. Ее можно реализовывать с помощью массива или с помощью связных списков

22 Динамические структуры данных: Очередь

23 Очередь. Пример Очередь в принтере Очередь сообщений в Windows Очередь з хлебом

24 Пример. Имитационное моделирование работы билетных касс Данный пример демонстрирует работу очереди на примере имитации работы билетных касс. Задачей имитации является определение значений выходных характеристик (например, среднее ожидание заявки в очереди и в системе, среднее время обслуживания заявки, плотность загрузки обслуживающих приборов и т. д.), исходя из заданных начальных параметров (например, количество обслуживающих приборов, ограничение на длину очереди, время обслуживания заявки и т. д.). Проект с исходным кодом можно найти в папке Queue.

25 3. Кольцевая очередь

26 Динамические структуры данных: Кольцевая очередь Кольцевая очередь - это разновидность обычной очереди. Она также представляет концепцию FIFO (First In First Out), то есть элемент, который добавили в очередь первым, первым ее и покинет. Отличие состоит в том, что элемент, покидающий очередь, не будет теряться безвозвратно, он будет перемещаться в её конец

27 Динамические структуры данных: Кольцевая очередь

28 Кольцевая очередь. Пример У вас в очереди 3 элемента 45,67,88. При обычной очереди после удаления первого элемента возникнет такая картина : 67,88. При использовании кольцевой будет 67,88,45. Т.е. удаляемый появляется в конце очереди.

29 Кольцевая очередь. Пример Данный пример демонстрирует принцип работы кольцевой очереди. В основе его лежит класс RingQueue, переработанный из класса Queue. Проект с исходным кодом можно найти в папке RingQueue.

30 4. Очередь с приоритетами

31 Очередь с приоритетами В реальных задачах иногда возникает необходимость в формировании очередей, отличных от FIFO(first in first out). Порядок выборки элементов из таких очередей определяется приоритетами элементов. Приоритет в общем случае может быть представлен числовым значением, которое вычисляется либо на основании значений каких-либо полей элемента, либо на основании внешних факторов. Так, и FIFO, и LIFO-очереди могут трактоваться как приоритетные очереди, в которых приоритет элемента зависит от времени его включения в очередь или как-то иначе.

32 Очередь с приоритетами При выборке элемента всякий раз выбирается элемент с наибольшим приоритетом. Возможны очереди с приоритетным включением - в которых последовательность элементов очереди все время поддерживается упорядоченной, т.е. каждый новый элемент включается на то место в последовательности, которое определяется его приоритетом, а при исключении всегда выбирается элемент из начала. Возможны и очереди с приоритетным исключением - новый элемент включается всегда в конец очереди, а при исключении в очереди ищется (этот поиск может быть только линейным) элемент с максимальным приоритетом и после выборки удаляется из последовательности.

33 Очередь с приоритетами. Пример Данный пример демонстрирует работу очереди с приоритетом. Проект с исходным кодом можно найти в папке QueueP.

34 5. Связанные списки

35 Связанные списки Предположим, что необходимо создать массив целых чисел, в который можно добавлять в любой момент времени любое количество целых значений. Данную задачу можно попытаться решить с помощью обычного массива. Однако это не удобно, так как размер массива становится фиксированным при создании массива. Такого типа ситуации обычно решаются с помощью связанных списков.

36 Связанные списки Связанный список - это линейный набор ссылающихся на себя структур, называемых узлами, и объединенных указателем-связкой. Доступ к связующим узлам производится через связывающий указатель, хранящийся в каждом узле. В отличие от массива, список не имеет фиксированного размера - он может расти или сокращаться по мере необходимости. Эта его особенность становится существенной, если число объектов в списке неизвестно до времени выполнения.

37 Связанные списки Односвязный список состоит из конкретных узлов, в состав каждого из которых входит значение, хранящееся в узле, например, для списка целых чисел это будет число, а также указатель, содержащий адрес следующего узла списка. В последнем узле списка указатель на следующий узел содержит NULL. Обязательным является указатель на начало списка, хранящий адрес первого узла списка.

38 Односвязный список

39 Связанные списки Элементы связанного списка не обязательно расположены в памяти друг за другом. Односвязный список назван так потому, что при использовании такого списка можно пройтись по нему из начала в конец списка, но не наоборот. Чтобы была возможность передвигаться по списку в оба конца, используются двусвязные списки. Две типичные операции: вставка узла и удаление узла.

40 Связанные списки. Вставка узла Если происходит вставка узла в односвязном списке, нужно выполнить следующие действия: 1. Необходимо выделить память под новый узел. 2. Записать в новый узел значение. 3. Записать в указатель на следующий узел в этом узле адрес узла, который должен располагаться после нового узла. 4. Заменить в узле, который будет располагаться перед новым узлом, записанный адрес на адрес нового узла. Если осуществить действия в другом порядке, то мы потеряем адрес узла, который должен располагаться после нового узла. А это означает, что мы не только не найдем этот узел, но и потеряем все узлы, расположенные за ним.

41 Связанные списки. Вставка узла

42 Связанные списки. Удаление узла В односвязном списке для удаления узла нужно выполнить следующие действия: 1. Записать адрес узла, следующего за удаляемым узлом, в указатель на следующий узел в узле, предшествующем удаляемому. 2. Удалить узел, предназначенный для удаления.

43 Связанные списки. Удаление узла

44 Односвязанный список. Пример(1) Интерфейс класса «Односвязный список» (List ) // Предотвращение повторного включения файла в проект #ifndef LIST #define LIST // Элемент данных struct Element { // Данные char data; // Адрес следующего элемента списка Element * Next; };

45 Односвязанный список. Пример(2) // Односвязный список class List { Element * Head; // Адрес головного элемента списка int Count; // Количество элементов списка public: List(); // Конструктор ~List(); // Деструктор void Add(char data); /* Добавление элемента в список (Новый элемент становится головным)*/

46 Односвязанный список. Пример(3) void Del();//Удаление элемента списка void DelAll(); // Удаление всего списка void Print(); /* Распечатка содержимого списка (Распечатка начинается с головного элемента) */ int GetCount(); /*Получение количества элементов, находящихся в списке*/ }; #endif

47 Пример(4). Реализация функций класса "Односвязный список" List::List() { Head = NULL; Count = 0; // Изначально список пуст } List::~List() {DelAll(); // Вызов функции удаления } int List::GetCount() { // Возвращаем количество элементов return Count; }

48 Пример(5). Реализация функций класса "Односвязный список" void List::Add(char data) { Element * temp = new Element; // создание нового элемента temp->data = data; // заполнение данными // следующий элемент - головной элемент списка temp->next = Head; // новый элемент становится головным элементом списка Head = temp; } void List::Del() { Element * temp= Head;// запоминаем адрес головного элемента Head = Head->Next; //перебрасываем голову на следующий элемент delete temp; // удаляем бывший головной элемент }

49 Пример(6). Реализация функций класса "Односвязный список" void List::DelAll() { while(head!= 0) //Пока еще есть элементы Del(); // Удаляем элементы по одному } void List::Print() { Element * temp= Head;// запоминаем адрес головного элемента while(temp!= 0) // Пока еще есть элементы {cout << temp->data; // Выводим данные temp = temp->next; // Переходим на следующий элемент } cout << endl; }

50 Пример(7). Использование класса "Односвязный список" // Тестовый пример void main() { List List lst; // Создаем объект класса char s[] = "Hello, World!!!\n"; // Тестовая строка cout << s << endl; // Выводим строку int len = strlen(s); // Определяем длину строки for(int i = 0; i < len; i++) // Загоняем строку в список lst.add(s[i]); lst.print(); // Распечатываем содержимое списка lst.del(); lst.del(); lst.del(); // Удаляем три элемента списка lst.print(); // Распечатываем содержимое списка }

51 6. Двусвязные списки

52 Двусвязные списки Двусвязный список также состоит из конкретных узлов, в состав каждого из которых входит значение, хранящееся в узле, указатель, содержащий адрес следующего узла списка. Но в отличие от односвязного списка, в каждом узле двусвязного списка хранится указатель, который содержит адрес предыдущего узла списка.

53 Двусвязные списки В первом узле указатель на предыдущий узел равен NULL. В последнем узле списка указатель на следующий узел также содержит NULL. Обязательным является указатель на начало списка, хранящий адрес первого узла списка, а также указатель на конец списка, хранящий адрес последнего узла. Изобразим двусвязный список, хранящий целые числа 12, 45, 9

54 Двусвязные списки

55 Вставка узла 1. Выделить память под новый узел. 2. Записать в новый узел значение. 3. В указатель на предыдущий узел записать адрес узла, который должен располагаться перед новым узлом. 4. Записать в указатель на следующий узел адрес узла, который должен быть расположен после нового узла. После этого уже не имеет значения, в каком узле (предыдущем или следующем) первым поменять значение адреса на адрес нового узла. Для примера мы поменяем значения в следующем порядке.

56 Вставка узла 5. В предыдущем узле заменяем значение указателя на следующий узел на адрес нового узла. 6. В следующем узле заменяем значение указателя на предыдущий узел на адрес нового узла.

57 Вставка узла

58 Вставка узла (алтернативный способ) 1. Выделяем память под новый узел. 2. Записываем в него значение. 3. В указатель на следующий узел записываем адрес узла, который должен располагаться после нового узла, а в том узле значение указателя на предыдущий узел заменяем на адрес нового узла. 4. В указатель на предыдущий узел записываем адрес узла, который будет располагаться перед новым узлом, и в этом узле значение указателя на следующий узел заменяем на адрес нового узла.

59 Удаление узла 1. Записать адрес узла, следующего за удаляемым узлом, в указатель на следующий узел узла, являющегося предыдущим для удаляемого узла. 2. Записать адрес узла, являющегося предыдущим для удаляемого, в указатель на предыдущий узел узла, следующего за удаляемым узлом. 3. Удалить узел, предназначенный для удаления.

60 Удаление узла

61 Двусвязные списки. Пример Данный пример демонстрирует создание и реализацию функций "навернутого" двусвязного списка. Проект с исходным кодом можно найти в папке List1.

62 Вопросы, рассмотренные на лекции 1. Динамические структуры данных: Стек 2. Очередь 3. Кольцевая очередь 4. Очередь с приоритетами 5. Связанные списки. Односвязный список 6. Связанные списки. Двусвязный список

63 СПАСИБО ЗА ВНИМАНИЕ!


Использование шаблона «Стек»

Использование шаблона «Стек» Использование шаблона «Стек» 2013 Интерфейс шаблона «Стек» template class Stack { void push (const T&); T pop (); T top () const; bool isempty() const ; bool isfull() const ; } //в стек //из

Подробнее

МИРЭА. Отчет по практической работе 1 по дисциплине «Структуры и алгоритмы обработки данных» Выполнил студент группы ИСБОп Принял Шмелёва Д. В.

МИРЭА. Отчет по практической работе 1 по дисциплине «Структуры и алгоритмы обработки данных» Выполнил студент группы ИСБОп Принял Шмелёва Д. В. МИНОБРНАУКИ РОССИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ высшего образования «Московский технологический университет» МИРЭА Институт информационных технологий (ИТ) Кафедра инструментального

Подробнее

Лекция 6. Динамические структуры данных

Лекция 6. Динамические структуры данных Лекция 6. Динамические структуры данных СОДЕРЖАНИЕ 1 Списки... 3 1.1 Стек (LIFO)... 3 1.2 Очередь (FIFO)... 4 1.3 Односвязный и двусвязный списки... 5 2 Ассоциативный массив. Хэш-таблица... 9 2.1 Прямая

Подробнее

Практика программирования C++ Домашняя работа 9

Практика программирования C++ Домашняя работа 9 Практика программирования C++ Домашняя работа 9 Задание состоит из двух независимых частей. Часть 1 C-строкой называется массив char ов, последний из которых имеет числовое значение 0 («завершающий ноль»)

Подробнее

Сам список представляет собой связанные между собой узлы и определяется указателем на его начало. Указатель на первый узел обозначим head (голова

Сам список представляет собой связанные между собой узлы и определяется указателем на его начало. Указатель на первый узел обозначим head (голова Двусвязные списки Ранее мы познакомились со списками, которые называют односвязными. В таких списках имеется возможность передвигаться только в одном направлении. Имея указатель на какой-то элемент списка,

Подробнее

Практика программирования 9

Практика программирования 9 Практика программирования 9 Стек, очередь, дек. Реализация на основе ограниченного массива Замена рекурсии стеком и циклом Автомат с магазинной памятью Кувшинов Д.Р. КМиММ УрФУ Екатеринбург 2011 Контейнеры

Подробнее

Структуры и алгоритмы обработки данных (СиАОД) Курс ведут: Лобанов Александр Анатольевич Шмелева Дарья Викторовна

Структуры и алгоритмы обработки данных (СиАОД) Курс ведут: Лобанов Александр Анатольевич Шмелева Дарья Викторовна Структуры и алгоритмы обработки данных (СиАОД) Курс ведут: Лобанов Александр Анатольевич Шмелева Дарья Викторовна Рекомендуемая литература Материал курса опирается на знания студентов, полученные ранее

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2013/2014. Лекция 14

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2013/2014. Лекция 14 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2013/2014 Лекция 14 1 Динамические структуры данных Стек (stack) это динамическая последовательность элементов, количество которых изменяется, причем

Подробнее

ADS-1 <3 > Линейные динамические ADT

ADS-1 <3 > Линейные динамические ADT 1/16 http://rain.ifmo.ru/cat/ ADS-1 Линейные динамические ADT c С. Е. Столяр, 2007 ses@mail.ifmo.ru c СПбГУ ИТМО, 2007 Кафедра компьютерных технологий Допускается свободное распространение с учебными

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2018/2019. Лекция 18

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2018/2019. Лекция 18 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2018/2019 Лекция 18 1 Организация стека как библиотеки stack.h: extern void push (char); extern char pop (void); extern int isempty (void); stack.c: #include

Подробнее

Практика программирования 10

Практика программирования 10 Практика программирования 10 Рекурсия/стек: ханойские башни Стековый калькулятор: выражения в инфиксной форме Двусвязный список, XOR-список Развёрнутый список Кувшинов Д.Р. КМиММ УрФУ Екатеринбург 2011

Подробнее

Простейшие контейнеры

Простейшие контейнеры Кафедра информационных систем и технологий http://edu.msiu.ru Е.А. Роганов Простейшие контейнеры Простейшие контейнеры 1 / 1 Простейшие контейнеры Контейнерные классы (container classes) классы, которые

Подробнее

Деревья с произвольным числом сыновей у каждого узла

Деревья с произвольным числом сыновей у каждого узла Деревья с произвольным числом сыновей у каждого узла Наряду с двоичными деревьями в программировании рассматриваются и произвольные деревья, каждая вершина которых может иметь произвольное число сыновей

Подробнее

Программы из нескольких файлов

Программы из нескольких файлов 102 В.Л. Тарасов Лекции по программированию на C++ Лекция 8 Программы из нескольких файлов Как правило, исходные тексты программ на C++ размещают в нескольких файлах. Это удобно, так как небольшой код

Подробнее

Лекция 3 ОБЪЕКТЫ И КЛАССЫ

Лекция 3 ОБЪЕКТЫ И КЛАССЫ Лекция 3 Курс «Информатика» ОБЪЕКТЫ И КЛАССЫ В этой лекции рассматриваются следующие вопросы: Абстрактные типы данных Абстрактные типы данных Класс Stock достаточно специфичен. Однако часто программисты

Подробнее

Стеки и очереди. Лекция 3. Курносов Михаил Георгиевич

Стеки и очереди. Лекция 3. Курносов Михаил Георгиевич Лекция 3 Стеки и очереди Курносов Михаил Георгиевич к.т.н. доцент Кафедры вычислительных систем Сибирский государственный университет телекоммуникаций и информатики http://www.mkurnosov.net/teaching Стек

Подробнее

14. Обобщённые классы

14. Обобщённые классы 14. Обобщённые классы 14.1. Обобщённые структуры данных 14.1-0 Написать обобщённый класс, реализующий квадродерево дерево, у каждого внутреннего узла которого ровно 4 потомка. Значения в узлах могут быть

Подробнее

Стеки и очереди Stacks and Queues

Стеки и очереди Stacks and Queues Стеки и очереди Stacks and Queues Это методы хранения и доступа к данным, для которых характерны следующие функции: 1.добавления 2.извлечение с удалением Stack. Основной принцип: первым удаляется последний

Подробнее

Шаблоны ( template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам

Шаблоны ( template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам Шаблоны 2013 Шаблоны ( template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам данных, размерам буферов, значениям по умолчанию)

Подробнее

Лекция 4: Стек. Очередь. КурносовМихаил Георгиевич к.т.н. доцент Кафедры вычислительных систем Сибирский государственный университет телекоммуникаций и информатики http://www.mkurnosov.net Контроль 1.

Подробнее

ЛЕКЦИЯ 8 СТРУКТУРЫ ДАННЫХ. СТЕК

ЛЕКЦИЯ 8 СТРУКТУРЫ ДАННЫХ. СТЕК ЛЕКЦИЯ 8 СТРУКТУРЫ ДАННЫХ. СТЕК На этой лекции речь пойдёт о структурах данных. Теперь, когда синтаксис языка хорошо изучен, можно приступать к более сложным вещам. Задача Дана строка, состоящая из открывающих

Подробнее

Национальный исследовательский университет «МИЭТ» МИЭТ. Кафедра ПКИМС. Теория алгоритмов. Лекция 2. Способы организации данных

Национальный исследовательский университет «МИЭТ» МИЭТ. Кафедра ПКИМС. Теория алгоритмов. Лекция 2. Способы организации данных МИЭТ Национальный исследовательский университет «МИЭТ» Кафедра ПКИМС Теория алгоритмов Лекция 2 Способы организации данных Слайд 2 из 15 Общая классификация структур данных Данные Дискретные Линейные (составные)

Подробнее

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы ООП. С++. Вопросы для проверки и закрепления знаний. 1. Проанализируйте ранее разработанные Вами программы и ответьте на вопрос: в каких из них наблюдается слабая связь между структурой данных и функционированием

Подробнее

Коллекции С# Лекция 7

Коллекции С# Лекция 7 Коллекции С# Лекция 7 Структура лекции Назначение коллекций Типы коллекций Методы и свойства для работы с коллекциями C# 2 Что такое коллекция? Коллекция специализированный класс для хранения, извлечения

Подробнее

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

Динамические структуры данных Динамические структуры данных Динамические массивы ( были рассмотрены на прошлом занятии ) Списки Стэк Очередь не входят в программу данного курса: Ассоциативные массивы Хеш-таблицы Очередь с приоритетом

Подробнее

Национальный исследовательский университет «МИЭТ» МИЭТ. Кафедра ПКИМС. Теория алгоритмов. Лекция 2. Способы организации данных

Национальный исследовательский университет «МИЭТ» МИЭТ. Кафедра ПКИМС. Теория алгоритмов. Лекция 2. Способы организации данных МИЭТ Национальный исследовательский университет «МИЭТ» Кафедра ПКИМС Теория алгоритмов Лекция 2 Способы организации данных Слайд 2 из 18 Общая классификация структур данных Данные Дискретные Линейные (составные)

Подробнее

Практика программирования 17

Практика программирования 17 Практика программирования 17 Двоичное дерево поиска Сбалансированные деревья AA-дерево Кувшинов Д.Р. КМиММ УрФУ Екатеринбург 2012 Двоичное дерево Binary tree Структура из элементов (узлов). Один из узлов

Подробнее

Алгоритмизация и программирование

Алгоритмизация и программирование Алгоритмизация и программирование Программирование на С/С++ (ч.16 структура данных «Бинарное дерево») Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Какие бывают

Подробнее

структура одного элемента type LIST = celltype; celltype = record element: eltype; next: LIST end; position = celltype; Java_node

структура одного элемента type LIST = celltype; celltype = record element: eltype; next: LIST end; position = celltype; Java_node Реализация АТД список:динамические структуры List class структура одного элемента type LIST = celltype; celltype = record element: eltype; next: LIST end; position = celltype; Java_node 1 Реализация на

Подробнее

ОСНОВЫ ПРОГРАММНОГО КОНСТРУИРОВАНИЯ. Лекция 6 10 октября 2016 г.

ОСНОВЫ ПРОГРАММНОГО КОНСТРУИРОВАНИЯ. Лекция 6 10 октября 2016 г. ОСНОВЫ ПРОГРАММНОГО КОНСТРУИРОВАНИЯ Лекция 6 10 октября 2016 г. СОСТАВНЫЕ ТИПЫ ДАННЫХ ЗАПИСИ Объединяют разнотипные данные (элементы, поля), относящиеся к одному объекту из предметной области. struct Point

Подробнее

Связные списки. Лекция 5

Связные списки. Лекция 5 Связные списки Лекция 5 Связные списки (Linked lists) Связный список (linked list) динамическая структура данных для хранения информации, в которой каждый элемент хранит указатели на один или несколько

Подробнее

Содержание. Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20

Содержание. Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20 Содержание Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20 Что такое язык программирования?...20 В чем различие между C и C++?.........................................21 Обязательно

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 15

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 15 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017 Лекция 15 1 Списки Односвязный список это динамическая структура данных, каждый элемент которой содержит ссылку на следующий элемент (либо NULL,

Подробнее

Студенческая лаборатория МФТИ-Intel. Структуры данных. Гареева Оксана

Студенческая лаборатория МФТИ-Intel. Структуры данных. Гареева Оксана Студенческая лаборатория МФТИ-Intel Структуры данных Гареева Оксана Oksana.gareeva@gmail.com 10.11.12 http://ilab.mipt.ru План лекци: Структуры данных. Общие понятия. Введение в указатели Структура: список

Подробнее

Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы.

Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы. Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы. 1. Статическая (static) переменная класса Добавим в определение класса статическую переменную: private: // double x;

Подробнее

Абстрактные типы и структуры данных

Абстрактные типы и структуры данных Абстрактные типы и структуры данных 1 Абстрактный тип данных (АТД) это тип данных, который предоставляет для работы с элементами этого типа определѐнный набор операций (функций ) а также возможность создавать

Подробнее

Семинар 4. Дружественные функции. Перегрузка операторов. Динамическое распределение памяти.

Семинар 4. Дружественные функции. Перегрузка операторов. Динамическое распределение памяти. Семинар 4. Дружественные функции. Перегрузка операторов. Динамическое распределение памяти. 1. Дружественные функции Дружественные функции обладает такими же правами доступа к данным класса, как и его

Подробнее

Начало История Библиотеки. Название. Лекция 1. Введение. Объектно-ориентированное программирование на C ++ 7 сентября 2009 г.

Начало История Библиотеки. Название. Лекция 1. Введение. Объектно-ориентированное программирование на C ++ 7 сентября 2009 г. Название Лекция 1. Введение Объектно-ориентированное программирование на C ++ 7 сентября 2009 г. Лекция 1 1 / 11 C C ++ Цели, ставившиеся при создании С Цели Непосредственная работа с памятью Структурные

Подробнее

Стеки и очереди. Глава 4. Другие структуры. Инструменты программиста. Ограничение доступа

Стеки и очереди. Глава 4. Другие структуры. Инструменты программиста. Ограничение доступа Глава 4 Стеки и очереди В этой главе рассматриваются три структуры данных: стек, очередь и приоритетная очередь. Сначала будут описаны основные отличия этих структур от массивов, а затем мы рассмотрим

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2015/2016. Лекция 24

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2015/2016. Лекция 24 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2015/2016 Лекция 24 1 Хеш-таблицы Словарные операции: добавление, поиск и удаление элементов по их ключам. Организуется таблица ключей: массив Index[m]

Подробнее

Язык программирования Си

Язык программирования Си Язык программирования Си Бикулов Д.А., Иваницкая Н.В., Иванов А.П. Семинар 6. Указатели. Передача параметра в функцию по указателю. Функции работы с динамической памятью. Динамические массивы. Указатель

Подробнее

Язык программирования Си++ Семинар 2. Массивы объектов. Массивы переменной длины. Операторы new, delete. Указатели. Ссылки.

Язык программирования Си++ Семинар 2. Массивы объектов. Массивы переменной длины. Операторы new, delete. Указатели. Ссылки. Язык программирования Си++ Иванов А.П., Князева О.С. Семинар 2. Массивы объектов. Массивы переменной длины. Операторы new, delete. Указатели. Ссылки. 1. Массивы объектов Встроенное в язык Си++ понятие

Подробнее

Выбор реализации функции во время выполнения называется динамическим полиморфизмом.

Выбор реализации функции во время выполнения называется динамическим полиморфизмом. 5.26. Виртуальные функции Выбор реализации функции во время выполнения называется динамическим полиморфизмом. Динамический полиморфизм основан на наследовании и виртуальных функциях. Виртуальная функция

Подробнее

Курс «Алгоритмы и алгоритмические языки» Лекция 11

Курс «Алгоритмы и алгоритмические языки» Лекция 11 Курс «Алгоритмы и алгоритмические языки» Лекция 11 1 Списки Односвязный список это динамическая структура данных, каждый элемент которой содержит ссылку на следующий элемент (либо NULL, если следующего

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2018/2019. Лекция 17

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2018/2019. Лекция 17 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2018/2019 Лекция 17 1 Алгоритм Кнута Морриса Пратта. Идея Префикс-функция, ассоциированная с образцом P, показывает, где в строке P повторно встречаются

Подробнее

Лекция 9. Терновой Максим Юрьевич к.т.н., с.н.с., доцент кафедры информационнотелекоммуникационных

Лекция 9. Терновой Максим Юрьевич к.т.н., с.н.с., доцент кафедры информационнотелекоммуникационных Технологии программирования Зима-Весна Лекция 9 Терновой Максим Юрьевич к.т.н., с.н.с., доцент кафедры информационнотелекоммуникационных сетей Вопросы, рассматриваемые на лекции 1. Частные (private) элементы

Подробнее

Язык Си. Реализация списков с помощью цепочек динамических объектов

Язык Си. Реализация списков с помощью цепочек динамических объектов Язык Си. Реализация списков с помощью цепочек динамических объектов А. А. Вылиток В языке Си нет встроенных типов данных и операций для работы со списками. Программируя на языке Паскаль (в котором также

Подробнее

ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 5 Структуры данных (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем Юрьевич Кардинальные числа типов данных Общим свойством

Подробнее

Лекция 1. Динамические массивы и некоторые структуры данных.

Лекция 1. Динамические массивы и некоторые структуры данных. Лекция 1. Динамические массивы и некоторые структуры данных. План лекции Массивы Динамические массивы в С Динамические массивы в С++ Вектор Стек и Очередь и Дек и 2 Массивы

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2018/2019. Лекция 19

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2018/2019. Лекция 19 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2018/2019 Лекция 19 1 Топологическая сортировка узлов ациклического ориентированного графа Структуры данных для представления узлов: Каждый узел исходного

Подробнее

Лабораторная работа 10. Краткая теория

Лабораторная работа 10. Краткая теория Лабораторная работа 10 Тема: Программирование с использованием динамической структуры стек Цель: Изучить методы организации списочных структур в динамической памяти. Реализовать алгоритмы помещения и изъятия

Подробнее

Министерство РФ по связи и информатизации. Поволжская Государственная Академия Телекоммуникаций и Информатики МЕТОДИЧЕСКИЕ УКАЗАНИЯ

Министерство РФ по связи и информатизации. Поволжская Государственная Академия Телекоммуникаций и Информатики МЕТОДИЧЕСКИЕ УКАЗАНИЯ Министерство РФ по связи и информатизации Поволжская Государственная Академия Телекоммуникаций и Информатики МЕТОДИЧЕСКИЕ УКАЗАНИЯ к лабораторным работам по дисциплине «Структуры и алгоритмы обработки

Подробнее

1 Связные списки. struct Node { int d; // элемент данных Node *n; // указатель на следующий узел Node(int dd, Node *nn = nullptr): d(dd), n(nn) {} };

1 Связные списки. struct Node { int d; // элемент данных Node *n; // указатель на следующий узел Node(int dd, Node *nn = nullptr): d(dd), n(nn) {} }; 1 Связные списки Ранее мы уже познакомились с массивами средством объединения нескольких однотипных переменных, доступных по номеру, который может быть результатом выражения. Как мы знаем, этот способ

Подробнее

Структуры данных. Программирование на языке С и С++

Структуры данных. Программирование на языке С и С++ Министерство образования Российской Федерации Южно-Уральский государственный университет Кафедра информатики Е.А. Конова, Г.А. Поллак, А.М. Ткачев Структуры данных. Программирование на языке С и С++ Учебное

Подробнее

Программирование на языке С++ с использованием классов.

Программирование на языке С++ с использованием классов. Лабораторная работа 1 Программирование на языке С++ с использованием классов. Цель работы: 1) изучить возможности программирования классов на языке С++; 2) получить основные навыки программирования манипуляторов

Подробнее

STL: последовательные контейнеры

STL: последовательные контейнеры http://compscicenter.ru 1/13 Александр Смаль CS центр 10 февраля 2016 Санкт-Петербург http://compscicenter.ru 2/13 STL: введение STL = Standard Template Library STL описан в стандарте C++, но не упоминается

Подробнее

4. Понятие класса. Программа 7. Класс Box

4. Понятие класса. Программа 7. Класс Box 4. Понятие класса Класс определяет новый тип данных, используя который можно определять переменные этого типа, которые называются объектами или экземплярами класса. Объявление класса имеет вид: class classname

Подробнее

Шаблоны C++ Абстрактное программирование

Шаблоны C++ Абстрактное программирование Абстрактное программирование Это произведение доступно по лицензии Creative Commons Attribution-ShareAlike ( Атрибуция На тех же условиях ) 3.0 Непортированная. http://creativecommons.org/licenses/by-sa/3.0/deed.ru

Подробнее

Деревья. Двоичные деревья

Деревья. Двоичные деревья Рис. 1 Деревья Мы будем понимать под деревом неориентированный связный граф без циклов. Если убрать требование связности, получится понятие, представляющее собой набор из нескольких не связанных между

Подробнее

Алгоритмизация и программирование

Алгоритмизация и программирование Алгоритмизация и программирование Программирование на С/С++ (ч.12 указатели) Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://berkut.homelinux.com Указатели Указатель переменная, значением

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2018/2019. Лекция 24

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2018/2019. Лекция 24 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2018/2019 Лекция 24 1 Пирамидальная сортировка: пирамида (двоичная куча) Рассматриваем массив a как двоичное дерево: Элемент a[i] является узлом дерева

Подробнее

Лекция 2. Как выполняются программы на C++

Лекция 2. Как выполняются программы на C++ http://compscicenter.ru 1/21 Лекция 2. Как выполняются программы на C++ Александр Смаль CS центр 15 сентября 2016 Санкт-Петербург http://compscicenter.ru 2/21 Типы данных Целочисленные: 1. char (символьный

Подробнее

Стандартная библиотека шаблонов STL

Стандартная библиотека шаблонов STL Стандартная библиотека шаблонов STL STL (Standard Template Library) является частью стандарта C++. Ядро STL состоит из четырех основных компонентов: контейнеры, итераторы, алгоритмы, распределители памяти.

Подробнее

Лекция 9. Списки, деки

Лекция 9. Списки, деки Название Лекция 9., деки Объектно-ориентированное программирование на C ++ 1 ноября 2009 г. Лекция 9 1 / 23 Концепция списка Начало Концепция списка Характеристики Перенос элементов Аналоги алгоритмов

Подробнее

Полякова Ирина Николаевна

Полякова Ирина Николаевна Полякова Ирина Николаевна Сборник заданий по Си для практических занятий в компьютерном классе. Методическое пособие для студентов бакалавриата по направлению Прикладная математика и информатика, 2010.

Подробнее

Дистанционная подготовка к Всероссийской олимпиаде по информатике

Дистанционная подготовка к Всероссийской олимпиаде по информатике Дистанционная подготовка к Всероссийской олимпиаде по информатике Преподаватели: к.ф.-м.н., заведующий кафедрой «САПР» ДВГУПС Пономарчук Юлия Викторовна E-mail: yulia.ponomarchuk@gmail.com преподаватель

Подробнее

АВТОМАТИЗИРОВАННОЕ ТЕСТИРОВАНИЕ СЛОЖНОСТИ АЛГОРИТМОВ С ПОМОЩЬЮ MOCK-ОБЪЕКТОВ. Е.А. Тюменцев

АВТОМАТИЗИРОВАННОЕ ТЕСТИРОВАНИЕ СЛОЖНОСТИ АЛГОРИТМОВ С ПОМОЩЬЮ MOCK-ОБЪЕКТОВ. Е.А. Тюменцев Математические структуры и моделирование 2013. 1(27). С. 82 88 УДК 004.053 АВТОМАТИЗИРОВАННОЕ ТЕСТИРОВАНИЕ СЛОЖНОСТИ АЛГОРИТМОВ С ПОМОЩЬЮ MOCK-ОБЪЕКТОВ Е.А. Тюменцев В статье описывается способ тестирования

Подробнее

(Binomial heaps)

(Binomial heaps) Лекция 5: Биномиальные кучи (Binomial heaps) КурносовМихаил Георгиевич к.т.н. доцент Кафедры вычислительных систем Сибирский государственный университет телекоммуникаций и информатики http://www.mkurnosov.net

Подробнее

Лекция 3: Бинарный поиск. Связные списки. КурносовМихаил Георгиевич к.т.н. доцент Кафедры вычислительных систем Сибирский государственный университет телекоммуникаций и информатики http://www.mkurnosov.net

Подробнее

Алгоритмизация и программирование

Алгоритмизация и программирование Алгоритмизация и программирование Программирование на С/С++ (ч.12 указатели) Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Указатели Указатель переменная, значением

Подробнее

Алгоритмизация и программирование

Алгоритмизация и программирование Алгоритмизация и программирование Программирование на С/С++ (ч.12 указатели) Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Указатели Указатель переменная, значением

Подробнее

Введение в программирование Урок 13: Анализ сложности

Введение в программирование Урок 13: Анализ сложности Введение в программирование Урок 13: Анализ сложности Введение в компьютерные науки - урок 13 1 Анализ сложности программы по времени Функция f1() ищет индекс такого элемента в массиве a[], который присутствует

Подробнее

Практика программирования C++ Самостоятельная работа 6

Практика программирования C++ Самостоятельная работа 6 Практика программирования C++ Самостоятельная работа 6 Рассмотрим машину, называемую конечный автомат, которая работает в пошаговом режиме; начав с некоторого (начального) состояния, на каждом шаге считывает

Подробнее

Семинар 3. Инкапсуляция и абстрагирование. Классы.

Семинар 3. Инкапсуляция и абстрагирование. Классы. Семинар 3. Инкапсуляция и абстрагирование. Классы. Класс представляет собой наиболее важное изменение в языке С++, предназначенное для реализации методов ООП. Он обеспечивает представление и сокрытие данных,

Подробнее

Вариант выбирать в соответствии с собственным порядковым номером в списке группы. В случае нехватки вариантов считать, что нумерация циклическая.

Вариант выбирать в соответствии с собственным порядковым номером в списке группы. В случае нехватки вариантов считать, что нумерация циклическая. Лабораторная работа 3 Задание Требуется реализовать программу, состоящую из двух частей. Первая часть программы должна реализовывать операции над простыми структурами данных. Вторая часть задания выполняет

Подробнее

Лекция 21 Обход двоичного дерева

Лекция 21 Обход двоичного дерева Лекция 21 Обход двоичного дерева 21.1. Определение двоичного дерева. Двоичное дерево это множество узлов, которое либо является пустым, либо состоит из корня и двух непересекающихся двоичных деревьев,

Подробнее

РЕАЛИЗАЦИЯ СТРУКТУР ДАННЫХ

РЕАЛИЗАЦИЯ СТРУКТУР ДАННЫХ РЕАЛИЗАЦИЯ СТРУКТУР ДАННЫХ Чтобы рисовать слона, надо его сначала увидеть. Вьетнамская пословица Содержание 2 Понятие структуры данных Основные структуры данных Реализация структур данных в языке Pascal

Подробнее

Конструктор копирования и оператор присваивания

Конструктор копирования и оператор присваивания 204 В.Л. Тарасов Лекции по программированию на C++ Лекция 13 Конструктор копирования и оператор присваивания 13.1. Проблемы при копировании При присваивании и копировании объектов выполняется почленное

Подробнее

Такое приведение леса к двоичному дереву называется естественным соответствием между лесом и двоичными деревьями.

Такое приведение леса к двоичному дереву называется естественным соответствием между лесом и двоичными деревьями. Лекция 22 Топологическая сортировка. 22.1. Представление произвольного дерева в виде двоичного. 22.1.1. В отличие от двоичного дерева произвольное дерево не может быть пустым (по определению оно должно

Подробнее

Программирование в C++ Преподаватель Колотова Людмила Павловна

Программирование в C++ Преподаватель Колотова Людмила Павловна Программирование в C++ Преподаватель Колотова Людмила Павловна 2 Содержание 7-го занятия по практике Массивы. Определение массивов. Доступ к элементам массивов. Среднее арифметическое элементов массива

Подробнее

Статические члены класса.

Статические члены класса. Статические члены класса. Статические члены-данные и члены-функции описываются в классе с квалификатором static. Статические члены-данные существуют в одном экземпляре и доступны для всех объектов данного

Подробнее

В примере типового расчета так и сделано (двумя способами).

В примере типового расчета так и сделано (двумя способами). Список, стек 1 Лекция 14. Список. Стек Со стеком мы знакомы с детства. Это пирамидка с разноцветными торами, одевающимися на штырь помогает изучать цвета и размеры, и порядок обработки LIFO. Во взрослой

Подробнее

Теория и технология программирования Основы программирования на языках C и C++

Теория и технология программирования Основы программирования на языках C и C++ Теория и технология программирования Основы программирования на Лекция 13. Области действия и времена жизни Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Основные понятия Область действия

Подробнее

Программирование и основы алгоритмизации. Лекция 5 Рекурсивные структуры данных. Деревья

Программирование и основы алгоритмизации. Лекция 5 Рекурсивные структуры данных. Деревья Программирование и основы алгоритмизации Лекция 5 Рекурсивные структуры данных. Деревья Рекурсивные структуры данных По аналогии с рекурсивным вызовом функции существуют структуры данных, допускающие рекурсивное

Подробнее

Шаблоны. 1. Механизм шаблонов реализует в С++ параметрический полиморфизм.

Шаблоны. 1. Механизм шаблонов реализует в С++ параметрический полиморфизм. Шаблоны 1. Механизм шаблонов реализует в С++ параметрический полиморфизм. 2. Шаблон представляет собой предварительное описание функции или класса, конкретное представление которых зависит от параметров

Подробнее

STL: последовательные контейнеры

STL: последовательные контейнеры http://compscicenter.ru 1/11 Александр Смаль CS центр 12 февраля 2014 Санкт-Петербург http://compscicenter.ru 2/11 STL: введение STL = Standard Template Library STL описан в стандарте C++, но не упоминается

Подробнее

Средства обработки ошибок. Исключения в С++

Средства обработки ошибок. Исключения в С++ Средства обработки ошибок. Исключения в С++ Обработка исключительных ситуаций в С++ организуется с помощью ключевых слов try, catch и throw. Операторы программы, при выполнении которых необходимо обеспечить

Подробнее

Лекция 3 Бинарный поиск Связные списки

Лекция 3 Бинарный поиск Связные списки Лекция 3 Бинарный поиск Связные списки Курносов Михаил Георгиевич к.т.н. доцент Кафедры вычислительных систем Сибирский государственный университет телекоммуникаций и информатики http://www.mkurnosov.net/teaching

Подробнее

Методы вектора. Создание вектора - вызов конструктора с указанием типа элементов: vector <double> Vec1;

Методы вектора. Создание вектора - вызов конструктора с указанием типа элементов: vector <double> Vec1; Методы вектора Создание вектора - вызов конструктора с указанием типа элементов: vector Vec1; //Создание пустого вектора vector Vec2 (Num, fvar2); //Вектор из Num копий fvar2 vector

Подробнее

Язык программирования JAVA (II)

Язык программирования JAVA (II) Язык программирования JAVA (II) Как программировать на java Исходный файл на языке Java - это текстовый файл, содержащий в себе одно или несколько описаний классов. Транслятор Java предполагает, что исходный

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 18

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 18 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017 Лекция 18 1 Двоичное дерево набор узлов, который: либо пуст (пустое дерево), либо разбит на три непересекающиеся части: узел, называемый корнем,

Подробнее

Семантический анализ

Семантический анализ Семантический анализ 2 Семантический анализ Размер Функция? Значение Х Время жизни Выделение памяти 3 Семантический анализ Размер Функция? Х Значение Число Символ Логическое значение Строка Составное значение

Подробнее

План практикума по курсу «Алгоритмы и структуры данных»

План практикума по курсу «Алгоритмы и структуры данных» План практикума по курсу «Алгоритмы и структуры данных» Приводится примерный список задач для разбора на практических занятиях (38 часов 19 пар). Занятия 1-4 (8 часов). Работа с файлами. 1. Дан текстовый

Подробнее

Способы обхода. Сначала рассмотрим обход дерева в глубину. Лучше всего этот обход описывается

Способы обхода. Сначала рассмотрим обход дерева в глубину. Лучше всего этот обход описывается Обход дерева В программировании часто возникает потребность перебрать один за другим все узлы некоторого дерева и предпринять определенные действия для каждого из них. Такой перебор и называется обходом

Подробнее

«Северо-Кавказский институт бизнеса, инженерных и информационных технологий» (ЧОУ ВО СКИБИИТ) Кафедра информационных технологий

«Северо-Кавказский институт бизнеса, инженерных и информационных технологий» (ЧОУ ВО СКИБИИТ) Кафедра информационных технологий «Северо-Кавказский институт бизнеса, инженерных и информационных технологий» (ЧОУ ВО СКИБИИТ) Кафедра информационных технологий Алгоритмы и структуры данных методические указания по выполнению лабораторных

Подробнее