SlideShare a Scribd company logo
АБСТРАКТНЫЕ ТИПЫ ДАННЫХ
ПОСЛЕДОВАТЕЛЬНОСТИ, СПИСКИ
Максименкова Ольга Вениаминовна
Младший научный сотрудник МНУЛ ИССА
Старший преподаватель Департамента программной инженерии
Факультета компьютерных наук
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 1
Цели
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 2
Познакомиться
• С контейнерами и последовательностями, как с
абстрактными типами данных;
• С динамическими структурами данных;
• Со способами реализации этих представлений на языке
C++
Получить навыки
• Реализации некоторых АТД на языке C++
Соглашения о терминологии
• Абстрактный Тип Данных (АТД) [abstract logic design] –
функциональное описание некоторого класса сущностей в
терминах операций, которые могут выполняться над ними.
• Интерфейс АТД – формальное и однозначное описание синтаксиса
и семантики операций, которые могут выполняться над
экземплярами АТД.
ТАК ЖЕ, КАК ОПИСАНИЕ ЯЗЫКА ПРОГРАММИРОВАНИЯ НЕ
ОПРЕДЕЛЯЕТ ОСОБЕННОСТИ ЕГО РЕАЛИЗАЦИИ, ТАК И
ИНТЕРФЕЙС АТД НЕ ОПРЕДЕЛЯЕТ РЕАЛИЗАЦИЮ АТД.
Контейнер
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 4
• Контейнер [container] – Абстрактный тип данных, представляющий
собой структурированную коллекцию информационных элементов,
доступ к которым определяется структурой контейнера.
• Добавление и удаление элементов контейнера назовём его
трансформацией.
• Доступ к элементу контейнера – операция получения или
изменения значения этого элемента.
• Последовательность [sequence] – контейнер, в котором элементы
упорядочены по индексам (пронумерованы).
Некоторые виды
последовательностей
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 5
• Вектор [vector]
• последовательность, в которой возможен доступ к любому
элементу по индексу элемента
• Дек
• Стек
• Очередь
Дек
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 6
• Дек [deque, double ended queue] – последовательность, в
которой возможны только:
1. доступ: к концевым элементам;
2. добавление: до начального и после конечного элемента;
3. удаление: концевых элементов.
Удаление Добавление
Добавление Удаление
Deque
Очередь
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 7
• Очередь [queue] – дек, в котором возможны только:
1. доступ: к начальному элементу;
2. добавление: после конечного элемента;
3. удаление: начального элемента.
• Конечный элемент очереди часто называют хвостом очереди,
а начальный – головой очереди.
Добавление Удаление
Queue
Стек
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 8
• Стек [stack] – дек, в котором возможны только:
1. доступ: к конечному элементу;
2. добавление: после конечного элемента;
3. удаление: конечного элемента.
• Конечный элемент стека называют вершиной стека.
Удаление
Добавление
Stack
Списки
Односвязный
Двусвязный
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 9
Список
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 10
• Список представляет собой такую реализацию
последовательности однотипных элементов, когда
элементы связаны друг с другом посредством ссылок.
• Каждый элемент списка содержит не только
информационное поле, но одно или более полей со
ссылками на другие элементы.
Наиболее распространённые списки
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 11
• односвязные списки
• каждый элемент, кроме последнего, содержит ссылку на
следующий, последний элемент ссылается на null
• двухсвязные списки
• каждый элемент, кроме первого и последнего, содержит ссылки на
предыдущий и следующий
Односвязный список
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 12
Value Value Value null...
Начало списка [Top]
5 7 10 null...
foo bar baz null...
Примеры
Модель элемента односвязного списка
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 13
Value Value Value null...
Начало списка [Top]
#include "iostream"
using namespace std;
struct ListItem {
int n;
ListItem* next;
};
void main() {
ListItem head; // создаём структуру
head.n = 1; // значение поля структуры
head.next = NULL; // значение поля типа указатель
}
Как добавить элемент в односвязный
список?
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 14
// добавим элемент
ListItem newItem;
newItem.n = 2;
newItem.next = NULL;
// head должен "указывать" на новый элемент
head.next = &newItem;
// пройдём по списку, нужен "указатель"
ListItem* curr = &head;
while (curr != NULL) {
cout << curr->n << endl;
curr = curr->next;
}
system("pause");
Самостоятельно напишем функцию, добавления элемента в конец
односвязного списка  следующий слайд
Задание
1. Описать функцию добавления нового элемента в конец
односвязного списка (как узнать, в какой список добавить
элемент?).
2. Описать функцию вывода на экран всех элементов
списка, начиная с головы.
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 15
Вставка элемента в односвязный список
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 16
Пусть имеется некоторый односвязный список и ссылка р на элемент,
после которого мы хотим вставить новый элемент.
Value Value ...
n n+1
...
Предшествующий
элемент
Состояние списка перед
добавление элемента
1. создание нового элемента
2. присвоение значений его полям
3. добавление связи с элементом, следующим за P
4. добавление связи с элементом P
Алгоритм добавления элемента
Создание и инициализация нового
элемента
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 17
?
Новый элемент [Tmp]
?
New
Новый элемент [Tmp]
?
1. Создание нового элемента
2. Присвоение значений его полям
ListItem Tmp;
Tmp.n = 2;
Tmp.next = NULL;
Добавление связей
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 18
Максименкова О.В., 2015 18
Value Value ...
n n+1
...
New
Новый элемент [Tmp]
Предшествующий
элемент [P]
Value Value ...
n n+1
...
New
Новый элемент [Tmp]
Предшествующий
элемент [P]
3. добавление связи с элементом, следующим за P
4. добавление связи с элементом P
Tmp.next = p.next;
p.next = &Tmp;
Удаление элемента из односвязного
списка
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 19
Пусть имеется некоторый односвязный список и ссылка р на
элемент, предшествующий тому, который мы хотим удалить.
Состояние списка перед
удалением элемента
1. добавление связи между P и следующим за удаляемым элементом
2. Освобождение памяти из под удалённого элемента!!!
Алгоритм удаления элемента
Value Value
n n+1
...
Предшествующий
элемент [P]
Value ...
n+2
Задание
1. Описать функцию добавления элемента в произвольное
место в списке (как задавать это место?)
2. Описать функцию удаления элемента из списка.
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 20
Двусвязный список
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 21
Value Valuenull Value... null
Начало списка [Head] Конец списка [Tail]
5 7null 9... null
Модель элемента двусвязного списка
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 22
Value Valuenull Value... null
Начало списка [Head] Конец списка [Tail]
struct DblListItem {
int n;
ListItem* next;
ListItem* prev;
};
void main() {
DblListItem head;
head.n = 1;
head.next = NULL;
head.prev = NULL;
}
Задание
1. Опишите набор функций для управления двусвязным
списком: добавление элемента списка, удаление
элемента списка, добавление элемента в конец списка,
добавление элемента в начало списка; вывод списка в
прямом и обратном порядке.
2. Каким образом реализовать закольцованный список?
3. * Опишите функции для управления односвязным и
двусвязным закольцованным списком.
4. ** Реализуйте любой алгоритм сортировки для списка.
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 23
(с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 24
Спасибо за внимание!
Максименкова Ольга Вениаминовна
Старший преподаватель Департамента программной инженерии, ФКН
E-mail: omaksimenkova@hse.ru
Blog: Stop To Scale (http://stoptoscale.blogspot.ru)

More Related Content

What's hot

1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#
Olga Maksimenkova
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиMikhail Kurnosov
 
Excel in Javascript
Excel in JavascriptExcel in Javascript
Excel in Javascript
Viktor Turskyi
 
Основы MATLAB. Программирование
Основы MATLAB. ПрограммированиеОсновы MATLAB. Программирование
Основы MATLAB. Программирование
Theoretical mechanics department
 
ОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, спискиОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, списки
Vladimir Parfinenko
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиMikhail Kurnosov
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Nikolay Grebenshikov
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Technopark
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Лекция 4: Стеки и очереди
Лекция 4: Стеки и очередиЛекция 4: Стеки и очереди
Лекция 4: Стеки и очередиMikhail Kurnosov
 
Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Technopark
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьMikhail Kurnosov
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
Mikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Technopark
 
Алгоритмы поиска
Алгоритмы поискаАлгоритмы поиска
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.
Igor Shkulipa
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1
Pavel Egorov
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
Mikhail Kurnosov
 

What's hot (20)

1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные списки
 
Основы MATLAB. Лекция 1.
Основы MATLAB. Лекция 1.Основы MATLAB. Лекция 1.
Основы MATLAB. Лекция 1.
 
Excel in Javascript
Excel in JavascriptExcel in Javascript
Excel in Javascript
 
Основы MATLAB. Программирование
Основы MATLAB. ПрограммированиеОсновы MATLAB. Программирование
Основы MATLAB. Программирование
 
ОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, спискиОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, списки
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные списки
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Лекция 4: Стеки и очереди
Лекция 4: Стеки и очередиЛекция 4: Стеки и очереди
Лекция 4: Стеки и очереди
 
Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2
 
Алгоритмы поиска
Алгоритмы поискаАлгоритмы поиска
Алгоритмы поиска
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
 

Viewers also liked

Array y Objects C#
Array y Objects C#Array y Objects C#
Array y Objects C#
Manuel Antonio
 
Математические основы методов решений систем логических уравнений
Математические основы методов решений систем логических уравненийМатематические основы методов решений систем логических уравнений
Математические основы методов решений систем логических уравнений
Olga Maksimenkova
 
Современные образовательные технологии в области компьютерных наук
Современные образовательные технологии в области компьютерных наукСовременные образовательные технологии в области компьютерных наук
Современные образовательные технологии в области компьютерных наук
Olga Maksimenkova
 
Абстрактные типы данных. Списки
Абстрактные типы данных. СпискиАбстрактные типы данных. Списки
Абстрактные типы данных. Списки
Olga Maksimenkova
 
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
Olga Maksimenkova
 
Решение систем логических уравнений, ЕГЭ 23 информатика
Решение систем логических уравнений, ЕГЭ 23 информатикаРешение систем логических уравнений, ЕГЭ 23 информатика
Решение систем логических уравнений, ЕГЭ 23 информатика
Olga Maksimenkova
 
Очистка данных на практике: мифы и легенты Excel и R
Очистка данных на практике: мифы и легенты Excel и RОчистка данных на практике: мифы и легенты Excel и R
Очистка данных на практике: мифы и легенты Excel и R
Olga Maksimenkova
 
SlideShare 101
SlideShare 101SlideShare 101
SlideShare 101
Amit Ranjan
 

Viewers also liked (8)

Array y Objects C#
Array y Objects C#Array y Objects C#
Array y Objects C#
 
Математические основы методов решений систем логических уравнений
Математические основы методов решений систем логических уравненийМатематические основы методов решений систем логических уравнений
Математические основы методов решений систем логических уравнений
 
Современные образовательные технологии в области компьютерных наук
Современные образовательные технологии в области компьютерных наукСовременные образовательные технологии в области компьютерных наук
Современные образовательные технологии в области компьютерных наук
 
Абстрактные типы данных. Списки
Абстрактные типы данных. СпискиАбстрактные типы данных. Списки
Абстрактные типы данных. Списки
 
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
 
Решение систем логических уравнений, ЕГЭ 23 информатика
Решение систем логических уравнений, ЕГЭ 23 информатикаРешение систем логических уравнений, ЕГЭ 23 информатика
Решение систем логических уравнений, ЕГЭ 23 информатика
 
Очистка данных на практике: мифы и легенты Excel и R
Очистка данных на практике: мифы и легенты Excel и RОчистка данных на практике: мифы и легенты Excel и R
Очистка данных на практике: мифы и легенты Excel и R
 
SlideShare 101
SlideShare 101SlideShare 101
SlideShare 101
 

More from Olga Maksimenkova

Информатика в школе: методы и технологии активного обучения
Информатика в школе: методы и технологии активного обученияИнформатика в школе: методы и технологии активного обучения
Информатика в школе: методы и технологии активного обучения
Olga Maksimenkova
 
Взаимное оценивание в дисцилине "Программирование"
Взаимное оценивание в дисцилине "Программирование"Взаимное оценивание в дисцилине "Программирование"
Взаимное оценивание в дисцилине "Программирование"
Olga Maksimenkova
 
2020 maksimenkova-dist learning
2020 maksimenkova-dist learning2020 maksimenkova-dist learning
2020 maksimenkova-dist learning
Olga Maksimenkova
 
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Olga Maksimenkova
 
Геймификация образования: фан, мотивация и преодоление себя
Геймификация образования: фан, мотивация и преодоление себяГеймификация образования: фан, мотивация и преодоление себя
Геймификация образования: фан, мотивация и преодоление себя
Olga Maksimenkova
 
2019-01-11-Digital Transformation of Education
2019-01-11-Digital Transformation of Education2019-01-11-Digital Transformation of Education
2019-01-11-Digital Transformation of Education
Olga Maksimenkova
 
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Olga Maksimenkova
 
Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Collaborative Learning in Data Science Education: a Data Expedition as a Form...Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Olga Maksimenkova
 
Инженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдевуИнженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдеву
Olga Maksimenkova
 
Video Game Design History
Video Game Design HistoryVideo Game Design History
Video Game Design History
Olga Maksimenkova
 
Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25
Olga Maksimenkova
 
Lec 04. The way to production: game testing and analytics
Lec 04. The way to production: game testing and analyticsLec 04. The way to production: game testing and analytics
Lec 04. The way to production: game testing and analytics
Olga Maksimenkova
 
Lec 03. The fates of the Games. Game engines, development
Lec 03. The fates of the Games. Game engines, developmentLec 03. The fates of the Games. Game engines, development
Lec 03. The fates of the Games. Game engines, development
Olga Maksimenkova
 
Lec 01. Mobile games development
Lec 01. Mobile games developmentLec 01. Mobile games development
Lec 01. Mobile games development
Olga Maksimenkova
 
[Maksimenkova_ Neznanov]apkit 2017
[Maksimenkova_ Neznanov]apkit 2017[Maksimenkova_ Neznanov]apkit 2017
[Maksimenkova_ Neznanov]apkit 2017
Olga Maksimenkova
 
Что скрывают открытые образовательные ресурсы?
Что скрывают открытые образовательные ресурсы?Что скрывают открытые образовательные ресурсы?
Что скрывают открытые образовательные ресурсы?
Olga Maksimenkova
 

More from Olga Maksimenkova (16)

Информатика в школе: методы и технологии активного обучения
Информатика в школе: методы и технологии активного обученияИнформатика в школе: методы и технологии активного обучения
Информатика в школе: методы и технологии активного обучения
 
Взаимное оценивание в дисцилине "Программирование"
Взаимное оценивание в дисцилине "Программирование"Взаимное оценивание в дисцилине "Программирование"
Взаимное оценивание в дисцилине "Программирование"
 
2020 maksimenkova-dist learning
2020 maksimenkova-dist learning2020 maksimenkova-dist learning
2020 maksimenkova-dist learning
 
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
 
Геймификация образования: фан, мотивация и преодоление себя
Геймификация образования: фан, мотивация и преодоление себяГеймификация образования: фан, мотивация и преодоление себя
Геймификация образования: фан, мотивация и преодоление себя
 
2019-01-11-Digital Transformation of Education
2019-01-11-Digital Transformation of Education2019-01-11-Digital Transformation of Education
2019-01-11-Digital Transformation of Education
 
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
 
Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Collaborative Learning in Data Science Education: a Data Expedition as a Form...Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Collaborative Learning in Data Science Education: a Data Expedition as a Form...
 
Инженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдевуИнженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдеву
 
Video Game Design History
Video Game Design HistoryVideo Game Design History
Video Game Design History
 
Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25
 
Lec 04. The way to production: game testing and analytics
Lec 04. The way to production: game testing and analyticsLec 04. The way to production: game testing and analytics
Lec 04. The way to production: game testing and analytics
 
Lec 03. The fates of the Games. Game engines, development
Lec 03. The fates of the Games. Game engines, developmentLec 03. The fates of the Games. Game engines, development
Lec 03. The fates of the Games. Game engines, development
 
Lec 01. Mobile games development
Lec 01. Mobile games developmentLec 01. Mobile games development
Lec 01. Mobile games development
 
[Maksimenkova_ Neznanov]apkit 2017
[Maksimenkova_ Neznanov]apkit 2017[Maksimenkova_ Neznanov]apkit 2017
[Maksimenkova_ Neznanov]apkit 2017
 
Что скрывают открытые образовательные ресурсы?
Что скрывают открытые образовательные ресурсы?Что скрывают открытые образовательные ресурсы?
Что скрывают открытые образовательные ресурсы?
 

Абстрактные типы данных, последовательности, списки

  • 1. АБСТРАКТНЫЕ ТИПЫ ДАННЫХ ПОСЛЕДОВАТЕЛЬНОСТИ, СПИСКИ Максименкова Ольга Вениаминовна Младший научный сотрудник МНУЛ ИССА Старший преподаватель Департамента программной инженерии Факультета компьютерных наук (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 1
  • 2. Цели (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 2 Познакомиться • С контейнерами и последовательностями, как с абстрактными типами данных; • С динамическими структурами данных; • Со способами реализации этих представлений на языке C++ Получить навыки • Реализации некоторых АТД на языке C++
  • 3. Соглашения о терминологии • Абстрактный Тип Данных (АТД) [abstract logic design] – функциональное описание некоторого класса сущностей в терминах операций, которые могут выполняться над ними. • Интерфейс АТД – формальное и однозначное описание синтаксиса и семантики операций, которые могут выполняться над экземплярами АТД. ТАК ЖЕ, КАК ОПИСАНИЕ ЯЗЫКА ПРОГРАММИРОВАНИЯ НЕ ОПРЕДЕЛЯЕТ ОСОБЕННОСТИ ЕГО РЕАЛИЗАЦИИ, ТАК И ИНТЕРФЕЙС АТД НЕ ОПРЕДЕЛЯЕТ РЕАЛИЗАЦИЮ АТД.
  • 4. Контейнер (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 4 • Контейнер [container] – Абстрактный тип данных, представляющий собой структурированную коллекцию информационных элементов, доступ к которым определяется структурой контейнера. • Добавление и удаление элементов контейнера назовём его трансформацией. • Доступ к элементу контейнера – операция получения или изменения значения этого элемента. • Последовательность [sequence] – контейнер, в котором элементы упорядочены по индексам (пронумерованы).
  • 5. Некоторые виды последовательностей (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 5 • Вектор [vector] • последовательность, в которой возможен доступ к любому элементу по индексу элемента • Дек • Стек • Очередь
  • 6. Дек (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 6 • Дек [deque, double ended queue] – последовательность, в которой возможны только: 1. доступ: к концевым элементам; 2. добавление: до начального и после конечного элемента; 3. удаление: концевых элементов. Удаление Добавление Добавление Удаление Deque
  • 7. Очередь (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 7 • Очередь [queue] – дек, в котором возможны только: 1. доступ: к начальному элементу; 2. добавление: после конечного элемента; 3. удаление: начального элемента. • Конечный элемент очереди часто называют хвостом очереди, а начальный – головой очереди. Добавление Удаление Queue
  • 8. Стек (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 8 • Стек [stack] – дек, в котором возможны только: 1. доступ: к конечному элементу; 2. добавление: после конечного элемента; 3. удаление: конечного элемента. • Конечный элемент стека называют вершиной стека. Удаление Добавление Stack
  • 10. Список (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 10 • Список представляет собой такую реализацию последовательности однотипных элементов, когда элементы связаны друг с другом посредством ссылок. • Каждый элемент списка содержит не только информационное поле, но одно или более полей со ссылками на другие элементы.
  • 11. Наиболее распространённые списки (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 11 • односвязные списки • каждый элемент, кроме последнего, содержит ссылку на следующий, последний элемент ссылается на null • двухсвязные списки • каждый элемент, кроме первого и последнего, содержит ссылки на предыдущий и следующий
  • 12. Односвязный список (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 12 Value Value Value null... Начало списка [Top] 5 7 10 null... foo bar baz null... Примеры
  • 13. Модель элемента односвязного списка (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 13 Value Value Value null... Начало списка [Top] #include "iostream" using namespace std; struct ListItem { int n; ListItem* next; }; void main() { ListItem head; // создаём структуру head.n = 1; // значение поля структуры head.next = NULL; // значение поля типа указатель }
  • 14. Как добавить элемент в односвязный список? (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 14 // добавим элемент ListItem newItem; newItem.n = 2; newItem.next = NULL; // head должен "указывать" на новый элемент head.next = &newItem; // пройдём по списку, нужен "указатель" ListItem* curr = &head; while (curr != NULL) { cout << curr->n << endl; curr = curr->next; } system("pause"); Самостоятельно напишем функцию, добавления элемента в конец односвязного списка  следующий слайд
  • 15. Задание 1. Описать функцию добавления нового элемента в конец односвязного списка (как узнать, в какой список добавить элемент?). 2. Описать функцию вывода на экран всех элементов списка, начиная с головы. (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 15
  • 16. Вставка элемента в односвязный список (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 16 Пусть имеется некоторый односвязный список и ссылка р на элемент, после которого мы хотим вставить новый элемент. Value Value ... n n+1 ... Предшествующий элемент Состояние списка перед добавление элемента 1. создание нового элемента 2. присвоение значений его полям 3. добавление связи с элементом, следующим за P 4. добавление связи с элементом P Алгоритм добавления элемента
  • 17. Создание и инициализация нового элемента (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 17 ? Новый элемент [Tmp] ? New Новый элемент [Tmp] ? 1. Создание нового элемента 2. Присвоение значений его полям ListItem Tmp; Tmp.n = 2; Tmp.next = NULL;
  • 18. Добавление связей (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 18 Максименкова О.В., 2015 18 Value Value ... n n+1 ... New Новый элемент [Tmp] Предшествующий элемент [P] Value Value ... n n+1 ... New Новый элемент [Tmp] Предшествующий элемент [P] 3. добавление связи с элементом, следующим за P 4. добавление связи с элементом P Tmp.next = p.next; p.next = &Tmp;
  • 19. Удаление элемента из односвязного списка (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 19 Пусть имеется некоторый односвязный список и ссылка р на элемент, предшествующий тому, который мы хотим удалить. Состояние списка перед удалением элемента 1. добавление связи между P и следующим за удаляемым элементом 2. Освобождение памяти из под удалённого элемента!!! Алгоритм удаления элемента Value Value n n+1 ... Предшествующий элемент [P] Value ... n+2
  • 20. Задание 1. Описать функцию добавления элемента в произвольное место в списке (как задавать это место?) 2. Описать функцию удаления элемента из списка. (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 20
  • 21. Двусвязный список (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 21 Value Valuenull Value... null Начало списка [Head] Конец списка [Tail] 5 7null 9... null
  • 22. Модель элемента двусвязного списка (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 22 Value Valuenull Value... null Начало списка [Head] Конец списка [Tail] struct DblListItem { int n; ListItem* next; ListItem* prev; }; void main() { DblListItem head; head.n = 1; head.next = NULL; head.prev = NULL; }
  • 23. Задание 1. Опишите набор функций для управления двусвязным списком: добавление элемента списка, удаление элемента списка, добавление элемента в конец списка, добавление элемента в начало списка; вывод списка в прямом и обратном порядке. 2. Каким образом реализовать закольцованный список? 3. * Опишите функции для управления односвязным и двусвязным закольцованным списком. 4. ** Реализуйте любой алгоритм сортировки для списка. (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 23
  • 24. (с) Максименкова О.В., НИУ ВШЭ, ФКН, ДПИ, 20.06.2016 24 Спасибо за внимание! Максименкова Ольга Вениаминовна Старший преподаватель Департамента программной инженерии, ФКН E-mail: omaksimenkova@hse.ru Blog: Stop To Scale (http://stoptoscale.blogspot.ru)