Презентация Сложные структуры данных. Связные списки онлайн

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Сложные структуры данных. Связные списки абсолютно бесплатно. Урок-презентация на эту тему содержит всего 45 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Сложные структуры данных. Связные списки



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    45 слайдов
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    273.18 kB
  • Просмотров:
    74
  • Скачиваний:
    1
  • Автор:
    неизвестен



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

№1 слайд
Сложные структуры данных
Содержание слайда: Сложные структуры данных Связные списки

№2 слайд
Содержание слайда:

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

№4 слайд
Недостатки связного списка
Содержание слайда: Недостатки связного списка Недостатком связного списка, как и других структур типа «список», в сравнении его с массивом, является отсутствие возможности работать с данными в режиме произвольного доступа, т. е. список – структура последовательно доступа, в то время как массив – произвольного.

№5 слайд
Односвязный список Каждый
Содержание слайда: Односвязный список Каждый узел односвязного (однонаправленного связного) списка содержит указатель на следующий узел. Из одной точки можно попасть лишь в следующую точку, двигаясь тем самым в конец. Так получается своеобразный поток, текущий в одном направлении.

№6 слайд
Односвязный список Каждый из
Содержание слайда: Односвязный список Каждый из блоков представляет элемент (узел) списка. Здесь и далее Head list – заголовочный элемент списка (для него предполагается поле next). Он не содержит данные, а только ссылку на следующий элемент. На наличие данных указывает поле info, а ссылки – поле next. Признаком отсутствия указателя является поле null.

№7 слайд
Односвязные и двусвязные
Содержание слайда: Односвязные и двусвязные списки Односвязный список не самый удобный тип связного списка, т. к. из одной точки можно попасть лишь в следующую точку, двигаясь тем самым в конец. Когда в двусвязном списке, кроме указателя на следующий элемент есть указатель на предыдущий.

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

№9 слайд
Двусвязный список Возможность
Содержание слайда: Двусвязный список Возможность двигаться как вперед, так и назад полезна для выполнения некоторых операций, но дополнительные указатели требуют задействования большего количества памяти, чем таковой необходимо в односвязном списке.

№10 слайд
Кольцевой список Еще один вид
Содержание слайда: Кольцевой список Еще один вид связного списка – кольцевой список. В кольцевом односвязном списке последний элемент ссылается на первый. В случае двусвязного кольцевого списка – плюс к этому первый ссылается на последний. Таким образом, получается зацикленная структура.

№11 слайд
Управление памятью Для
Содержание слайда: Управление памятью Для создания и использования динамических структур требуется динамическое распределение памяти — возможность получения памяти для хранения новых узлов и освобождать память для удаления узлов.

№12 слайд
Содержание слайда:

№13 слайд
Содержание слайда:

№14 слайд
Содержание слайда:

№15 слайд
include lt stdlib.h gt
Содержание слайда: #include <stdlib.h> #include <stdlib.h> struct node { int x; struct node *next; }; int main() { /* Обычная структура */ struct node *root; /* Теперь root указывает на структуру node */ root = (struct node *) malloc( sizeof(struct node) ); /* Узел root указывает на следующий элемент, которого пока нет */ root->next = NULL; /* Использование оператора -> позволяет изменять узел структуры, на которую он указывает */ root->x = 5; free ( root ); return 0; }

№16 слайд
int main int main Это менять
Содержание слайда: int main() int main() { /* Это менять нельзя, т.к. тогда мы потеряем список в памяти */ struct node *root; /* Это указывает на каждый элемент списка, пока мы пробегаем по нему */ struct node *conductor; root = malloc( sizeof(struct node) ); root->next = NULL; root->x = 12; conductor = root; if ( conductor != NULL ) { while ( conductor->next != NULL) { conductor = conductor->next; } }

№17 слайд
Создаёт новый узел в конце
Содержание слайда: /* Создаёт новый узел в конце */ /* Создаёт новый узел в конце */ conductor->next = malloc( sizeof(struct node) ); conductor = conductor->next; if ( conductor == NULL ) { printf("Не хватает памяти!\n"); return 0; } /* инициализируем память */ conductor->next = NULL; conductor->x = 42; return 0; }

№18 слайд
conductor root conductor root
Содержание слайда: conductor = root; conductor = root; if ( conductor != NULL ) { /*убедимся, что существует место старта*/ while ( conductor->next != NULL ) { printf( "%d\n", conductor->x); conductor = conductor->next; } printf( "%d\n", conductor->x ); }

№19 слайд
conductor root conductor root
Содержание слайда: conductor = root; conductor = root; while ( conductor != NULL ) { printf( "%d\n", conductor->x ); conductor = conductor->next; }

№20 слайд
Очистка памяти struct node
Содержание слайда: Очистка памяти struct node *temp; temp = root->ptr; free(root); /* освобождение памяти текущего корня*/ root = temp; // новый корень списка

№21 слайд
Стек Стеком называется
Содержание слайда: Стек  Стеком называется структура данных, организованная по принципу LIFO – last-in, first-out , т.е. элемент, попавшим в множество последним, должен первым его покинуть. При практическом использовании часто налагается ограничение на длину стека, т.е. требуется, чтобы количество элементов не превосходило заранее определенное целое число N

№22 слайд
Стек
Содержание слайда: Стек

№23 слайд
Стек Реализация на основе
Содержание слайда: Стек Реализация 1 на основе массива Для реализации стека, состоящего не более чем из 100  чисел, следует определить массив, состоящий из 100  элементов и целую переменную, указывающую на вершину стека (ее значение будет также равно текущему числу элементов в стеке) int stack[100], n=0;

№24 слайд
Стек Реализация на основе
Содержание слайда: Стек Реализация 2 на основе массива с использованием общей структуры struct Stack{ int stack[100]; int n; };

№25 слайд
Стек Реализация на основе
Содержание слайда: Стек Реализация 3 на основе указателей Если максимальный размер стека можно выяснить только после компиляции программы, то память под стек нужно выделять динамически. При этом, вершину стека можно указывать не индексом в массиве, а указателем на вершину. Для этого следует определить следующие переменные int *stack, *head; или struct SStack{ int *stack; int *n; };

№26 слайд
Очередь Очередью называется
Содержание слайда: Очередь Очередью называется структура данных, организованная по принципу FIFO – first-in, first-out , т.е. элемент, попавшим в множество первым, должен первым его и покинуть. При практическом использовании часто налагается ограничение на длину очереди, т.е. требуется, чтобы количество элементов не превосходило заранее определенное целое число N

№27 слайд
Очередь
Содержание слайда: Очередь

№28 слайд
Очередь реализация Для
Содержание слайда: Очередь реализация Для реализации очереди необходимо знать первый и последний элемент находящийся в ней. Например, для реализации стандартной очереди из менее чем 100 целых чисел определить следующие данные #define N 100 int array[N], begin=0,end=0; Соответственно при добавлении элементов в очередь переменная end будет увеличиваться, а при изъятии их из очереди увеличиваться будет begin.

№29 слайд
Бинарное дерево Бинарными
Содержание слайда: Бинарное дерево Бинарными деревьями называют структуру данных, в которой, как правило, задан корневой элемент или корень и для каждой вершины (элемента) существует не более двух потомков.

№30 слайд
Бинарное дерево реализация
Содержание слайда: Бинарное дерево реализация struct STree{ int value; struct STree *prev; struct STree *left, *right; }; здесь указатель prev указывает на родительский элемент данной вершины, а left и right – на двух потомков, которых традиционно называют левым и правым. Величина value называется ключом вершины.

№31 слайд
Бинарное дерево Бинарное
Содержание слайда: Бинарное дерево Бинарное дерево называется деревом поиска, если для любой вершины дерева a ключи всех вершин в правом поддереве больше или равны ключа a, а в левом – меньше. Неравенства можно заменить на строгие, если известно, что в дереве нет равных элементов.

№32 слайд
Дерево поиска Поиск элемента
Содержание слайда: Дерево поиска Поиск элемента struct STree *Find(struct STree *root, int v){ if(root==NULL)return NULL; if(root->value==v)return root; if(root->value>=v)return Find(root->right,v); else return Find(root->left, v); };

№33 слайд
Дерево поиска Добавление
Содержание слайда: Дерево поиска Добавление элемента struct STree *Insert(struct STree *root, struct STree *v){ if(v->value>=root->value) return root->right==NULL ? (v->prev=root, v->right=v->left=NULL, root->right=v) : Insert(root->right, v); else return root->left==NULL ? (v->prev=root,v->right=v->left=NULL,root->left=v) : Insert(root->left, v); };

№34 слайд
Дерево поиска
Содержание слайда: Дерево поиска

№35 слайд
Дерево поиска
Содержание слайда: Дерево поиска

№36 слайд
Дерево поиска
Содержание слайда: Дерево поиска

№37 слайд
Содержание слайда:

№38 слайд
Содержание слайда:

№39 слайд
Содержание слайда:

№40 слайд
Содержание слайда:

№41 слайд
Дерево поиска Добавление
Содержание слайда: Дерево поиска Добавление элемента Функция Insert добавляет элемент в бинарное дерево поиска и возвращает указатель на добавляемый элемент.

№42 слайд
Аргументы командной строки
Содержание слайда: Аргументы командной строки

№43 слайд
Аргументы командной строки
Содержание слайда: Аргументы командной строки Обратиться к аргументам командной строки в программе возможно через специальные переменные int argc и char *argv[] argc – число переданных аргументов, argv – массив строк равный числу аргументов. При вызове программы всегда есть один аргумент имя запущенной программы.

№44 слайд
Аргументы командной строки
Содержание слайда: Аргументы командной строки #include <stdio.h> int main(int argc, char *argv[]){ if(argc > 1) { printf("Вы ввели много чего"); } printf("Но это точно имя этой программы: %s", argv[0]); return 0; }

№45 слайд
Аргументы командной строки
Содержание слайда: Аргументы командной строки

Скачать все slide презентации Сложные структуры данных. Связные списки одним архивом: