Разделы презентаций


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

Содержание

Программирование и основы алгоритмизацииТема 09. Динамические структуры данных2Шевченко А. В.Статические и динамические структуры данныхСтруктуры данныхСтатическиеДинамическиеСтруктурыОбъединенияМассивыСпискиГрафыДеревья

Слайды и текст этой презентации

Слайд 1Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
1
Тема 9. Динамические

структуры данных
Шевченко А. В.

Программирование и основы алгоритмизацииТема 09. Динамические структуры данных1Тема 9. Динамические структуры данныхШевченко А. В.

Слайд 2Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
2
Шевченко А. В.
Статические

и динамические структуры данных
Структуры данных
Статические
Динамические
Структуры
Объединения
Массивы
Списки
Графы
Деревья

Программирование и основы алгоритмизацииТема 09. Динамические структуры данных2Шевченко А. В.Статические и динамические структуры данныхСтруктуры данныхСтатическиеДинамическиеСтруктурыОбъединенияМассивыСпискиГрафыДеревья

Слайд 3Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
3
Шевченко А. В.
Динамические

структуры данных
"Я женился на вдове, у которой была взрослая дочь.

Мой отец, часто навещавший нас, влюбился в мою падчерицу и женился на ней. Следовательно, мой отец стал моим зятем, а моя падчерица - моей мачехой. Спустя несколько месяцев моя жена родила сына, который стал шурином моего отца и одновременно моим дядей. У жены моего отца, то есть моей падчерицы, тоже родился сын. Таким образом, у меня появился брат и одновременно внук. Моя жена является моей бабушкой, так как она мать моей мачехи. Следовательно, я муж моей жены и одновременно ее внук, другими словами - я собственный дедушка."

Из одной цюрихской газеты, июль 1922 года.
Программирование и основы алгоритмизацииТема 09. Динамические структуры данных3Шевченко А. В.Динамические структуры данных

Слайд 4Иванов
Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
4
Шевченко А. В.
Линейные

списки
18
44
44
55
55
Заголовок
first: 18
18
44
44
55
55
Заголовок
first: 18
last: 55
18
44
Петров
Сидоров

ИвановПрограммирование и основы алгоритмизацииТема 09. Динамические структуры данных4Шевченко А. В.Линейные списки1844445555Заголовокfirst: 181844445555Заголовокfirst: 18last: 551844ПетровСидоров

Слайд 5Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
5
Шевченко А. В.
Пример

обхода списка
typedef struct {short code; char name[24]; short next;} PERS;

PERS

pers[] = {{ 1, "Александров", 0}, ...
{18, "Иванов", 44}, ...
{44, "Петров", 55}, ...
{55, "Сидоров", 0}, ... };

int first = 18;

while(first)
{
int i = first-1;
printf(pers[i].name);
first = pers[i].next;
}
Программирование и основы алгоритмизацииТема 09. Динамические структуры данных5Шевченко А. В.Пример обхода спискаtypedef struct {short code; char name[24];

Слайд 6Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
6
Шевченко А. В.
Включение

в список
18
44
44
03
55
Заголовок
first: 18
last: 55
18
03
03
55
44
18
44
44
55
55
Заголовок
first: 18
last: 55
18
44

Программирование и основы алгоритмизацииТема 09. Динамические структуры данных6Шевченко А. В.Включение в список1844440355Заголовокfirst: 18last: 5518030355441844445555Заголовокfirst: 18last: 551844

Слайд 7Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
7
Шевченко А. В.
Пример

включения в список
typedef struct {short code; char name[24]; short next;

short prev;} PERS;

PERS pers[] = {{ 1, "Александров", 0, 0}, ...
{03, "Антонов", 0, 0}, ...
{18, "Иванов", 44, 0}, ...
{44, "Петров", 55, 18}, ...
{55, "Сидоров", 0, 44}, ... };

int сurrent = 44;
int insert = 3;
int i = current-1;
int j = insert-1;
pers[pers[i].next-1].prev = insert;
pers[j].next = pers[i].next;
pers[i].next = insert;
pers[j].prev = current;
Программирование и основы алгоритмизацииТема 09. Динамические структуры данных7Шевченко А. В.Пример включения в списокtypedef struct {short code; char

Слайд 818
44
44
03
55
Заголовок
first: 18
last: 55
18
03
03
55
44
Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
8
Шевченко

А. В.
Исключение из списка
18
03
55
Заголовок
first: 18
last: 55
03
03
55
18

1844440355Заголовокfirst: 18last: 551803035544Программирование и основы алгоритмизацииТема 09. Динамические структуры данных8Шевченко А. В.Исключение из списка180355Заголовокfirst: 18last: 5503035518

Слайд 9Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
9
Шевченко А. В.
Пример

исключения из списка
typedef struct {short code; char name[24]; short next;

short prev;} PERS;

PERS pers[] = {{ 1, "Александров", 0, 0}, ...
{03, "Антонов", 55, 44}, ...
{18, "Иванов", 44, 0}, ...
{44, "Петров", 3, 18}, ...
{55, "Сидоров", 0, 3}, ... };

int current = 44;
int i = current-1;
pers[pers[i].next-1].prev = pers[i].prev;
pers[pers[i].prev-1].next = pers[i].next;
pers[i].next = 0;
pers[i].prev = 0;
Программирование и основы алгоритмизацииТема 09. Динамические структуры данных9Шевченко А. В.Пример исключения из спискаtypedef struct {short code; char

Слайд 10Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
10
Шевченко А. В.
Очередь,

стек
Очередь (FIFO)



Стек (LIFO)



Дисциплина очереди

- первым вошел - первым вышел

Дисциплина стека - последним вошел - первым вышел







Программирование и основы алгоритмизацииТема 09. Динамические структуры данных10Шевченко А. В.Очередь, стекОчередь (FIFO)  Стек (LIFO)  Дисциплина

Слайд 11Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
11
Шевченко А. В.
Пример

реализации очереди
int queue[100];
int n = 0;

void QueueIn(int Value)
{
queue[n++]

= Value;
}

int QueueOut()
{
int value = queue[0];
n--;

for(int i = 0; i < n; i++)
queue[i] = queue[i+1];

return(value);
}

void main()
{
QueueIn(18);
QueueIn(44);
QueueIn(3);
QueueIn(55);

while(n)
{
int next = QueueOut();
...
}
}

Программирование и основы алгоритмизацииТема 09. Динамические структуры данных11Шевченко А. В.Пример реализации очередиint queue[100];int n = 0;void QueueIn(int

Слайд 12Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
12
Шевченко А. В.
Пример

реализации стека
int stack[100];
int n = 0;

void StackIn(int Value)
{
stack[n++]

= Value;
}

int StackOut()
{
return(stack[--n]);
}

void main()
{
StackIn(18);
StackIn(44);
StackIn(3);
StackIn(55);

while(n)
{
int next = StackOut();
...
}
}

Программирование и основы алгоритмизацииТема 09. Динамические структуры данных12Шевченко А. В.Пример реализации стекаint stack[100];int n = 0;void StackIn(int

Слайд 13Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
13
Шевченко А. В.
Деревья
Велосипед
Рама
Колесо
Руль
Седло
Обод
Шина
Втулка
Спица
Гайка

М8
Болт М8х40
1
1
1
2
1
1
2
1
36
1
1
Гайка М8
Задача расчета потребности в ресурсах для партии в

100 шт.
Вариант 1: дерево
Программирование и основы алгоритмизацииТема 09. Динамические структуры данных13Шевченко А. В.ДеревьяВелосипедРамаКолесоРульСедлоОбодШинаВтулкаСпицаГайка М8Болт М8х40111211213611Гайка М8Задача расчета потребности в ресурсах

Слайд 14Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
14
Шевченко А. В.
Алгоритм

обхода дерева. Структура данных
typedef struct
{
short code;


float quant;
} CHILD;

typedef struct
{
short code;
char name[32];
CHILD childs[8];
int nchild;
} PROD;

ИЗДЕЛИЕ

имеет

1

Код

Наименование

Число комплектующих

КОМПЛЕКТУЮЩЕЕ

Количество

М

является

1

М

Программирование и основы алгоритмизацииТема 09. Динамические структуры данных14Шевченко А. В.Алгоритм обхода дерева. Структура данныхtypedef struct {

Слайд 15Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
15
Шевченко А. В.
Алгоритм

обхода дерева. Данные
PROD prod[] =
{
{ 1, "Велосипед",

{{2, 1}, {3, 2}, {4, 1}, {5, 1}}, 4},
{ 2, "Рама", {}, 0},
{ 3, "Колесо", {{6, 36}, {7, 1}, {8, 1}, {9, 1}}, 4},
{ 4, "Руль", {}, 0},
{ 5, "Седло", {{10, 1}, {11, 1}}, 2},
{ 6, "Спица", {}, 0},
{ 7, "Обод", {}, 0},
{ 8, "Шина", {}, 0},
{ 9, "Втулка", {{10, 2}}, 1},
{10, "Гайка М8", {}, 0},
{11, "Болт М8х40", {}, 0}
};
Программирование и основы алгоритмизацииТема 09. Динамические структуры данных15Шевченко А. В.Алгоритм обхода дерева. ДанныеPROD prod[] = {

Слайд 16Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
16
Шевченко А. В.
Алгоритм

обхода дерева. Пример реализации
void treenode(short code, int Quant)
{
PROD*

p = &prod[code-1];
printf("%s : %d\n", p->name, Quant);

for(int i = 0; i < p->nchild; i++)
treenode(p->childs[i].code,
p->childs[i].quant*Quant);
}

void main()
{
treenode(1, 100);
}

Слайд 17Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
17
Шевченко А. В.
Алгоритм

обхода дерева. Результат
Велосипед : 100
Рама :

100
Колесо : 200
Спица : 7200
Обод : 200
Шина : 200
Втулка : 200
Гайка М8 : 400
Руль : 100
Седло : 100
Гайка М8 : 100
Болт М8х40 : 100

Программирование и основы алгоритмизацииТема 09. Динамические структуры данных17Шевченко А. В.Алгоритм обхода дерева. РезультатВелосипед : 100 Рама

Слайд 18Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
18
Шевченко А. В.
Графы
Велосипед
Рама
Колесо
Руль
Седло
Обод
Шина
Втулка
Спица
Гайка

М8
Болт М8х40
1
1
1
2
1
1
2
1
36
1
1
Задача расчета потребности в ресурсах для партии в 100

шт.
Вариант 2: ациклический граф
Программирование и основы алгоритмизацииТема 09. Динамические структуры данных18Шевченко А. В.ГрафыВелосипедРамаКолесоРульСедлоОбодШинаВтулкаСпицаГайка М8Болт М8х40111211213611Задача расчета потребности в ресурсах для

Слайд 19









typedef struct {
short code;
char

name[32];
CHILD childs[8];
int nchild;
int

count;
int quant;
} PROD;

Программирование и основы алгоритмизации

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

19

Шевченко А. В.

Алгоритм обхода графа. Разметка

void graphmark(short code)
{
PROD* p = &prod[code-1];

if(++p->count > 1) return;

for(int i = 0; i < p->nchild; i++)
graphmark(p->childs[i].code);
}

void main()
{
for(int i = 0; i < NPROD; i++)
{
prod[i].count = 0;
prod[i].quant = 0;
}

graphmark(1);
...
}

1

1

1

1

1

1

1

1

1

2

typedef struct {  short code;  char name[32];  CHILD childs[8];  int  nchild;

Слайд 20








typedef struct {
short code;
char

name[32];
CHILD childs[8];
int nchild;
int

count;
int quant;
} PROD;

Программирование и основы алгоритмизации

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

20

Шевченко А. В.

Алгоритм обхода графа. Расчет

void graphcalc(short code, int Quant)
{
PROD* p = &prod[code-1];
p->quant += Quant;

if(--p->count > 0) return;

printf("%s %d\n", p->name, Quant);

for(int i = 0; i < p->nchild; i++)
graphcalc(p->childs[i].code,
p->childs[i].quant*p->quant);
}

void main()
{
...
graphcalc(1, 100);
}

1

1

1

1

1

1

1

1

1

2


Слайд 21Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
21
Шевченко А. В.
Алгоритм

обхода графа. Результат
Велосипед : 100
Рама :

100
Колесо : 200
Спица : 7200
Обод : 200
Шина : 200
Втулка : 200
Руль : 100
Седло : 100
Гайка М8 : 500
Болт М8х40 : 100

Программирование и основы алгоритмизацииТема 09. Динамические структуры данных21Шевченко А. В.Алгоритм обхода графа. РезультатВелосипед : 100 Рама

Слайд 22Программирование и основы алгоритмизации
Тема 09. Динамические структуры данных
22
Шевченко А. В.
Соответствие

между операторами и структурами данных
"Образ"
Операторы
Атомарный объект
Присваивание
Перечисление
Составной оператор
C++
=
{ ; ; }
Данные
Простой

тип

Запись

C++

char, short

struct

Выбор

Условный оператор

if

Объединение

union

Предопределенное
повторение

Цикл с параметром

for

Массив

[]

Повторение

Цикл с условием

while

Список

*p

Рекурсия

Процедура

f()

Дерево

*p

Граф

Оператор перехода

goto

Сеть

*p

Программирование и основы алгоритмизацииТема 09. Динамические структуры данных22Шевченко А. В.Соответствие между операторами и структурами данных

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика