Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Концепции ООП.docx
Скачиваний:
33
Добавлен:
29.03.2016
Размер:
151.79 Кб
Скачать

16. Структуры данных. Очередь.

Структура данных (англ. data structure) — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике. Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор функций, составляющих её интерфейс. Назначение структур: повышении эффективности и производительности программ. Структуры относятся к типам значений, и поэтому ими можно оперировать непосредственно, а не по ссылке. Следовательно, для работы со структурой вообще не требуется переменная ссылочного типа, а это означает в ряде случаев существенную экономию оперативной памяти.

Очередь – это частный случай списка, добавление элементов в который выполняется в один

конец – хвост, а выборка производится с другого конца – головы. Других операции с очередью нет. При выборке элемент исключается из очереди. Очередь реализует принцип обслуживания FIFO (первым пришел первым вышел).

Пример:

Очередь проще всего представить в виде узкой трубы, в один конец которой бросают мячи, с другого конца которой они вылетают.

Очереди имеет структуру:

  1. информационное поле inf, которое может быть любого типа;

  2. ссылочное поле next, которое будет использоваться для хранения ссылки на

следующий элемент очереди.

Функциональные элементы:

  1. вложенный класс Node для реализации базового элемента очереди;

  2. закрытое поле head, хранящее ссылку на первый элемент очереди;

3) закрытое поле tail, хранящее ссылку на последний элемент очереди; 4) конструктор класса.

tail

Две точки доступа headиtail.

17. Коллекции в c#, описать какие структуры данных реализуют.

Коллекция– структура данных, обеспечивающая множества … элементов и эффективный доступ к ним.

Способ добавления, хранения и последовательного доступа зависит от поставленной задачи.

Основные интерфейсы коллекций.

Перечисление:IEnumeratorиIEnumerable(перебор элементов последовательности)

Коллекция:ICollectionиICollection<T> (базовый для всех коллекций)

Список:IListиIList<T> (доступ по индексу)

Множество:ISet<T> - набор уникальных элементов

Словарь: IDictionary, IDictionary<TKey, TValue>

Какие структуры данных реализуют.

Массив

Плюсы:

Память

Произвольный доступ

Последовательный доступ

Минусы:

Упорядочивание

Добавление и удаление элементов

Динамический массив

Плюсы:

Произвольный доступ

Последовательный доступ

Добавление и удаление в конце

Минусы:

Упорядочивание

Добавление и удаление в начале

Добавление и удаление в произвольной позиции

Сортированный массив

Плюсы:

Произвольный доступ

Последовательный доступ

Поиск

Упорядочивание

Минусы:

Добавление и удаление элементов

Связный список

Плюсы:

Последовательный доступ Добавление и удаление элементов

Минусы:

Память

Произвольный доступ

Поиск

Хеш-таблицы

Плюсы:

Произвольный доступ

Добавление и удаление элементов

Минусы:

Память

Последовательный доступ

Поиск

18. Матрицы преобразований.

Область применения:

– DirectXиOpenGL

– почти любые 2Dи все 3Dигры

– CSS3 –Xaml(WPF)

Матрица переноса

Т=

Пример. Сместить точку (100,100) на 10 пикселей по оси OX:

(100,100) => [100 100 1]*=

(110,100)

Матрица поворота

T=

Пример. Повернуть точку (100,100) на 0,5 радиан (28,6о) относительно центра:

[100 100 1]*=

Матрица масштабирования.

T=

Пример. Увеличить масштаб фигуры, в которую входит (100,100) в 2 раза относительно центра.

[100 100 1]*=

Матрица отражения.

Tx=Ty=

Пример. Отразить (100,100) относительно OX.

[100 100 1]*=

3D пространство.

Ось OZнаправлена от наблюдателя.

Матрица переноса (translate)

T=

Матрица растяжения/сжатия (scale)

T=

Матрица поворота (robate)

Toz=Tox=Toy=

private void button2_Click(object sender, EventArgs e)

{

p=MatrixHelper.Translate(p, 10, 0);

Graph.DrawRectangle(prn, p.X, p.Y, 50, 50);

}