
- •3. Ооп. Методы, перегрузка, переопределение.
- •4. Ооп. Полиморфизм.
- •5. Методы класса. Конструкторы. Виды конструкторов. Статические методы и поля.
- •6. Понятие сложности алгоритма. Типовые виды алгоритмической сложности.
- •7. Исключения (try, catch, finally).
- •8. Интерфейсы, применение предназначения.
- •9. Generic типы.
- •10. Ограничения Generic типов.
- •11. Структуры данных. Динамический массив.
- •12. Структуры данных. Список.
- •13. Структуры данных. Двунаправленный список.
- •14. Структуры данных. Хеш-таблица.
- •15. Структуры данных. Стек.
- •16. Структуры данных. Очередь.
- •17. Коллекции в c#, описать какие структуры данных реализуют.
- •18. Матрицы преобразований.
- •19. Основы теории графов, что это такое, применение.
- •20. Граф. Способы задания графа.
12. Структуры данных. Список.
Структура данных (англ. data structure) — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике. Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор функций, составляющих её интерфейс. Назначение структур: повышении эффективности и производительности программ. Структуры относятся к типам значений, и поэтому ими можно оперировать непосредственно, а не по ссылке. Следовательно, для работы со структурой вообще не требуется переменная ссылочного типа, а это означает в ряде случаев существенную экономию оперативной памяти.
Список – это последовательность элементов a1, а2,…,аn (n больше 0) одного типа. Количество элементов n называется длиной списка. Если n = 0, то это пустой список. Элементы списка линейно упорядочены в соответствии с их позицией в списке.
Строение списка
а1, аi-1, ai, аi+1, аn.
Список может быть реализован с помощью массива, или ссылок. Связать последовательность элементов определенного типа в список можно так, чтобы каждый элемент содержал ссылку на следующий элемент последовательности. Такой список называется
однонаправленным. Если каждый элемент списка содержит две ссылки
(одну
на следующий элемент в списке, а вторую на предыдущий), то такой список называется
двунаправленным. Если же последний элемент связать ссылкой с первым, то получится кольцевой список.
Связный список (последовательность элементов одного типа)
5 |
* |


4 |
* |
8 |
* |
Плюсы: последовательный доступ, добавление и удаление элементов.
Минусы: память, произвольный доступ, поиск.
Классический список
Устройство

головахвост
100120222
5, 7, 12
Посмотреть хранящиеся значения можно только у head.
4 операции:
Получить (изменить Head)
Добавить Head
Получить Tail
Проверка на пустоту
class List<T>
{
class ListItem<T>
{
public T Data {get; set;}
public ListItem<T> Next {get; set;}
}
}
private ListItem<T> first;
private ListItem<T> current;
void AddFirst(T item);
T Current {get; set;}
bool HasValues {get;}
bool MoveNext();
void Reset();
public void AddFirst(T item)
{ if( first==null)
{ first=new.ListItem<T>()
{ Data=item};
}
else
{ current=new ListItem<T>() {Data=item};
current.Next=first;
first=current;
}
Список:
Плюсы: добавление и удаление элементов за constвремя
Минусы: на каждый элемент тратится дополнительное место на хранение ссылок; неизвестно положение элементов в памяти; необходим полный перебор для поиска, невозможен произвольный доступ по индексу; невозможно движение в обратном направлении.
13. Структуры данных. Двунаправленный список.
Структура данных (англ. data structure) — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике. Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор функций, составляющих её интерфейс. Назначение структур: повышении эффективности и производительности программ. Структуры относятся к типам значений, и поэтому ими можно оперировать непосредственно, а не по ссылке. Следовательно, для работы со структурой вообще не требуется переменная ссылочного типа, а это означает в ряде случаев существенную экономию оперативной памяти.
Список – это последовательность элементов a1, а2,…,аn (n больше 0) одного типа. Количество элементов n называется длиной списка. Если n = 0, то это пустой список. Элементы списка линейно упорядочены в соответствии с их позицией в списке.
Если каждый элемент списка содержит две ссылки (одну на следующий элемент в списке, а вторую на предыдущий), то такой список называется
двунаправленным.
Двунаправленный список
Prev |
Data |
Next |
|
Prev |
Data |
Next |
class ListItem<T>
{
public ListItem<T> Previous {get; set}
public T Data {get; set;}
public ListItem<T> Next {get; set;}
}
private ListItem<T> first; (current, last)
Операции
Проверка на пустоту, добавление в начало или конец,
Добавление в начало списка
current = new ListItem<T>();
current.Data = value;
current.Next = first;
first Previous = current;
first = current;