Определение
В случае, когда память под структуры данных в программе выделяется по мере необходимости отдельными блоками, связанными друг с другом с помощью указателей, то такую организацию памяти называют динамическими структурами данных.
линейные списки;
стеки;
очереди;
бинарные деревья.
Пример элемента двусвязного списка :
struct node {
int data1;
char data2[15];
...
node *next;
node *prev;
};
1. Формирование первого элемента
node *first(int d){
node *pv = new node; // - выделение памяти под элемент
pv->d = d; // - присваивание значения полю данных
pv->next = NULL; // - обнуление указателей на следующий
pv->prev = NULL; // и предыдущий элементы (их еще нет)
return pv; } // - передача в программу указателя на
// первый элемент списка
3. Поиск элемента по ключу
node *find(node *const pbeg, int d){
node *pv = pbeg; // - указатель на первый эл-т списка
while(pv){
if(pv->d == d) break;// - если значение совпало, то выход
pv = pv->next; } // - выбор следующего эл-та списка
return pv; } // - передача в программу указателя на
// найденный элемент списка
Примечание:
Пример описывает вставку нового элемента только в середину списка.
Примечания:
При чтении элемента он исключается из стека.
Работает стек по принципу «последним вошел, первым вышел» (LIFO).
Другие операции со стеком не определены.
Примечания:
При чтении элемента он исключается из очереди.
Работает очередь по принципу «первым вошел, первым вышел» (FIFO).
Другие операции с очередью не определены.
Пример функции обхода дерева:
function tree_walk (дерево)
{
tree_walk (левое поддерево);
посещение корня;
tree_walk (правое поддерево);
}
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть