Содержание
- 2. Динамические структуры данных Строение: набор узлов, объединенных с помощью ссылок. Как устроен узел: Типы структур: списки
- 3. Когда нужны списки? Задача (алфавитно-частотный словарь). В файле записан текст. Нужно записать в другой файл в
- 4. Что такое список: пустая структура – это список; список – это начальный узел (голова) и связанный
- 5. Что нужно уметь делать со списком? Создать новый узел. Добавить узел: в начало списка; в конец
- 6. Создание узла PNode CreateNode ( char NewWord[] ) { PNode NewNode = new Node; strcpy(NewNode->word, NewWord);
- 7. Добавление узла в начало списка 1) Установить ссылку нового узла на голову списка: NewNode->next = Head;
- 8. Добавление узла после заданного 1) Установить ссылку нового узла на узел, следующий за p: NewNode->next =
- 9. Задача: сделать что-нибудь хорошее с каждым элементом списка. Алгоритм: установить вспомогательный указатель q на голову списка;
- 10. Добавление узла в конец списка Задача: добавить новый узел в конец списка. Алгоритм: найти последний узел
- 11. Проблема: нужно знать адрес предыдущего узла, а идти назад нельзя! Решение: найти предыдущий узел q (проход
- 12. Добавление узла перед заданным (II) Задача: вставить узел перед заданным без поиска предыдущего. Алгоритм: поменять местами
- 13. Поиск слова в списке Задача: найти в списке заданное слово или определить, что его нет. Функция
- 14. Куда вставить новое слово? Задача: найти узел, перед которым нужно вставить, заданное слово, так чтобы в
- 15. Удаление узла void DeleteNode ( PNode &Head, PNode p ) { PNode q = Head; if
- 16. Алфавитно-частотный словарь Алгоритм: открыть файл на чтение; прочитать слово: если файл закончился (n!=1), то перейти к
- 17. Двусвязные списки Структура узла: struct Node { char word[40]; // слово int count; // счетчик повторений
- 18. Тема 5. Стеки, очереди, деки Динамические структуры данных (язык Си)
- 19. Стек Стек – это линейная структура данных, в которой добавление и удаление элементов возможно только с
- 20. Пример задачи Задача: вводится символьная строка, в которой записано выражение со скобками трех типов: [], {}
- 21. Решение задачи со скобками Алгоритм: в начале стек пуст; в цикле просматриваем все символы строки по
- 22. Реализация стека (массив) Структура-стек: const MAXSIZE = 100; struct Stack { char data[MAXSIZE]; // стек на
- 23. Реализация стека (массив) char Pop ( Stack &S ) { if ( S.size == 0 )
- 24. Программа void main() { char br1[3] = { '(', '[', '{' }; char br2[3] = {
- 25. Обработка строки (основной цикл) for ( i = 0; i { for ( k = 0;
- 26. Реализация стека (список) Добавление элемента: Структура узла: struct Node { char data; Node *next; }; typedef
- 27. Реализация стека (список) Снятие элемента с вершины: char Pop (PNode &Head) { char x; PNode q
- 28. Вычисление арифметических выражений a b + c d + 1 - / Как вычислять автоматически: Инфиксная
- 29. Запишите в постфиксной форме (32*6-5)*(2*3+4)/(3+7*2) (2*4+3*5)*(2*3+18/3*2)*(12-3) (4-2*3)*(3-12/3/4)*(24-3*12)
- 30. Вычисление выражений Постфиксная форма: a b + c d + 1 - / Алгоритм: взять очередной
- 31. Системный стек (Windows – 1 Мб) Используется для размещения локальных переменных; хранения адресов возврата (по которым
- 32. Очередь Очередь – это линейная структура данных, в которой добавление элементов возможно только с одного конца
- 33. Реализация очереди (массив) самый простой способ нужно заранее выделить массив; при выборке из очереди нужно сдвигать
- 34. Реализация очереди (кольцевой массив)
- 35. Реализация очереди (кольцевой массив) В очереди 1 элемент: Очередь пуста: Очередь полна: Head == Tail +
- 36. Реализация очереди (кольцевой массив) const MAXSIZE = 100; struct Queue { int data[MAXSIZE]; int head, tail;
- 37. Реализация очереди (кольцевой массив) Выборка из очереди: int Pop ( Queue &Q ) { int temp;
- 38. Реализация очереди (списки) struct Node { int data; Node *next; }; typedef Node *PNode; struct Queue
- 39. Реализация очереди (списки) void PushTail ( Queue &Q, int x ) { PNode NewNode; NewNode =
- 40. Реализация очереди (списки) int Pop ( Queue &Q ) { PNode top = Q.Head; int x;
- 42. Скачать презентацию