
- •Содержание
- •Введение
- •Указатель
- •1.1. Определение указателя
- •1.2. Понятие динамической структуры данных
- •1.3.Переменные типа "массив". Арифметические операции с указателями
- •Int hours[6];
- •1.4. Динамические массивы
- •Контрольные вопросы
- •Задания для практической работы
- •Абстрактный тип данных
- •Линейный однонаправленный (односвязный ) список
- •1.1. Определение односвязного списка
- •1.2. Операции обработки списка
- •1.3. Создание класса для работы со списком
- •1.4. Реализация копирования списка с помощью класса
- •Контрольные вопросы
- •Задания для практической работы
- •Линейные двунаправленные списки
- •1.1. Определение двунаправленного списка
- •Контрольные вопросы
- •Задания для практической работы
- •Структуры данных стеки и очереди
- •1.1. Определение стека, очереди
- •1.2. Представление стека
- •1.3. Основные операции над стеком
- •1.4. Реализация стека на основе статического массива
- •1.5. Реализация стека с использованием динамической памяти
- •1.6. Представление статической очереди
- •1.7.Представление динамической очереди
- •Контрольные вопросы
- •Задания для практической работы
- •Структуры данных: деревья
- •1.1. Определение структуры: дерево
- •1.2. Обходы деревьев
- •1.2.1. Алгоритмы обхода в глубину
- •1.2.2. Алгоритмы обхода в ширину
- •1.3. Ввод дерева
- •1.4. Разрушение дерева
- •1.5. Представление выражений с помощью деревьев
- •Контрольные вопросы
- •Задания для практической работы
- •Литература
Контрольные вопросы
1.Понятие двусвязного списка. Возможные структуры двусвязного списка.
2.Задание двусвязного списка.
3.Основные операции над двусвязным списком.
Задания для практической работы
Создать на основе класса для линейного односвязного списка класс операций для работы с двусвязным списком.
Дана последовательность символов, оканчивающаяся точкой найти всех соседей заданного символа ( первый и последний символы считать соседями ).
Дана последовательность символов, оканчивающаяся точкой подсчитать количество символов, у которых левый сосед больше правого соседа ( первый и последний элемент считать соседями );
Дана последовательность символов, оканчивающаяся точкой удалить все символы, у которых равные соседи ( первый и последний символы считать соседями );
Дана последовательность символов, оканчивающаяся точкой переставить в обратном порядке все символы между первым и последним вхождениями заданного символа;
Дана последовательность символов, оканчивающаяся точкой в конец последовательности добавить все ее символы, располагая их в обратном порядке ( например, из последовательности 1, 2, 3 получить 1, 2, 3, 2,1).
Дана последовательность латинских букв, оканчивающаяся точкой. Среди букв есть специальный символ, появление которого означает отмену предыдущей буквы; k знаков подряд отменяют k предыдущих букв, если такие есть. Учитывая вхождение этого символа преобразовать последовательность.
Даны две разреженные квадратные матрицы A и B порядка n(разреженная матрица это матрица высокого порядка с большим количеством нулевых элементов ). Получить матрицу C = A+B. Для представления разреженной матрицы использовать двусвязный циклический список. Каждое звено списка состоит из пяти полей :
поле с номером строки ненулевого элемента,
поле с номером столбца ненулевого элемента,
поле со значением элемента,
поле со ссылкой на предыдущий ненулевой элемент в этой же строке,
поле со ссылкой на предыдущий ненулевой элемент в этом же столбце. Каждая строка ( и столбец ) имеют заглавное звено, соответствующее ссылочное поле которого содержит ссылку на последний ненулевой элемент в строке ( в столбце ) .
Дан многочлен P( x ) произвольной степени с целыми коэффициентами, причем его одночлены могут быть не упорядочены по степеням x , а одночлены с одинаковой степенью могут повторяться (например, -75x + 8x4 - x2 + 6x4 – 5 - x). Привести подобные члены в этом многочлене и расположить одночлены по убыванию степеней x .
Даны действительные числа x1 , x2 , . . . , xn ( n >= 2 и заранее неизвестно). Вычислить x1 xn + x2 xn-1 + . . . + xn x1.
Даны действительные числа x1 , x2 , . . . , xn ( n >= 2 и заранее неизвестно). Вычислить (x1 + xn ) ( x2 + xn-1 ) . . . ( xn + x1 ) .
Даны действительные числа x1 , x2 , . . . , xn ( n >= 2 и заранее неизвестно). Вычислить (x1 + x2 + 2xn ) ( x2 + x3 + 2xn-1 ) . . . ( xn-1 + xn + 2x2 ) .
Даны действительные числа y1 , y2 , . . . , yn ( n >= 2 и заранее неизвестно). Получить последовательность y1 , y2 , . . . , yn , y1 , . . . , yn .
Даны действительные числа y1 , y2 , . . . , yn ( n >= 2 и заранее неизвестно). Получить последовательность y1 , y2 , . . . , yn , yn , . . . , y1 .
Даны действительные числа y1 , y2 , . . . , yn ( n >= 2 и заранее неизвестно). Получить последовательность yn , yn-1 , . . . , y1 , y1 , . . . , yn .
Даны действительные числа a1 , a2 , . . . , a2n (n >= 2 и заранее неизвестно). Вычислить
a1 a2n + a2 a2n-1 + . . . + an an+1 ;
Даны действительные числа a1 , a2 , . . . , a2n (n >= 2 и заранее неизвестно). Вычислить min ( a1 + an+1 , a2 + an+2 , . . . , an + a2n ) ;
Даны действительные числа a1 , a2 , . . . , a2n (n >= 2 и заранее неизвестно). Вычислить max ( min ( a1 , a2n ) , min ( a3 , a2n-2 ) , . . . , min ( a2n-1 , a2 ) ) .
Далее можно выбрать любую из задач для линейного односвязного списка.