МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ОБРАЗОВАНИЯ
«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ»
Г.Э. Вощинская, Е.М. Лещенко
СТРУКТУРЫ И АЛГОРИТМЫ ОБРАБОТКИ ДАННЫХ
Часть 2
Учебно-методическое пособие
Воронеж
Издательский дом ВГУ
2019
Стр.1
Содержание
Задание 1 ............................................................................................................ 4
Задание 2 .......................................................................................................... 45
Список литературы ......................................................................................... 51
3
Стр.3
Также необходимо разработать серию примеров, демонстрирующих основные
аспекты работы с данной библиотекой списков.
2. Кольцевой список
Разработать библиотеку обобщенных классов для работы с кольцевыми
списками данных. В структуру классов входят как минимум:
IList: IEnumerable – базовый интерфейс для всех кольцевых
списков;
o методы:
int Add(T value);
void Clear();
bool Contains(T value);
int IndexOf(T value);
void Insert(int index, T value);
void Remove(T value);
void RemoveAt(int index);
IList subList(int fromIndex, int toIndex);
o свойства:
int Count;
T this[int index];
ListException – класс, описывающий исключения, которые могут
происходить в ходе работы с кольцевым списком (также можно написать
ряд наследников);
ArrayList: IList – класс кольцевого списка на основе массива;
LinkedList: IList – класс кольцевого списка на основе связного
списка;
6
Стр.6
UnmutableList: IList – класс неизменяющегося кольцевого
списка, является оберткой над любым существующим списком
(должен кидаться исключениями на вызов любого метода, изменяющего
список);
ListUtils – класс различных операций над кольцевым списком;
o методы:
static bool Exists(IList, CheckDelegate);
static T Find(IList, CheckDelegate);
static T FindLast(IList, CheckDelegate);
static int FindIndex(IList, CheckDelegate);
static int FindLastIndex(IList, CheckDelegate);
static IList FindAll(IList, CheckDelegate,
ListConstructorDelegate);
static IList ConvertAll(IList,
ConvertDelegate, ListConstructorDelegate);
static void ForEach(IList, ActionDelegate);
static void Sort(IList, CompareDelegate);
static bool CheckForAll(IList, CheckDelegate);
o свойства:
static readonly ListConstructorDelegate
ArrayListConstructor;
static readonly ListConstructorDelegate
LinkedListConstructor;
Также необходимо разработать серию примеров, демонстрирующих основные
аспекты работы с данной библиотекой кольцевых списков.
3. Двусвязный список
Разработать библиотеку обобщенных классов для работы с двусвязными
списками данных. В структуру классов входят как минимум:
7
Стр.7
IList: IEnumerable – базовый интерфейс для всех двусвязных
списков;
o методы:
int Add(T value);
void Clear();
bool Contains(T value);
int IndexOf(T value);
void Insert(int index, T value);
void Remove(T value);
void RemoveAt(int index);
IList subList(int fromIndex, int toIndex);
o свойства:
int Count;
T this[int index];
ListException – класс, описывающий исключения, которые могут
происходить в ходе работы с двусвязным списком (также можно написать
ряд наследников);
ArrayList: IList – класс двусвязного списка на основе массива;
LinkedList: IList – класс двусвязного списка на основе связного
списка;
UnmutableList: IList – класс неизменяющегося двусвязного
списка, является оберткой над любым существующим списком
(должен кидаться исключениями на вызов любого метода, изменяющего
список);
ListUtils – класс различных операций над двусвязным списком;
o методы:
static bool Exists(IList, CheckDelegate);
8
Стр.8
static T Find(IList, CheckDelegate);
static T FindLast(IList, CheckDelegate);
static int FindIndex(IList, CheckDelegate);
static int FindLastIndex(IList, CheckDelegate);
static IList FindAll(IList, CheckDelegate,
ListConstructorDelegate);
static IList ConvertAll(IList,
ConvertDelegate, ListConstructorDelegate);
static void ForEach(IList, ActionDelegate);
static void Sort(IList, CompareDelegate);
static bool CheckForAll(IList, CheckDelegate);
o свойства:
static readonly ListConstructorDelegate
ArrayListConstructor;
static readonly ListConstructorDelegate
LinkedListConstructor;
Также необходимо разработать серию примеров, демонстрирующих основные
аспекты работы с данной библиотекой двусвязных списков.
4. Упорядоченный список
Разработать библиотеку обобщенных классов для работы с упорядоченными
списками данных. В структуру классов входят как минимум:
IList: IEnumerable – базовый интерфейс для всех упорядоченных
списков;
o методы:
int Add(T value);
void Clear();
9
Стр.9
bool Contains(T value);
int IndexOf(T value);
void Insert(int index, T value);
void Remove(T value);
void RemoveAt(int index);
IList subList(int fromIndex, int toIndex);
o свойства:
int Count;
T this[int index];
ListException – класс, описывающий исключения, которые могут
происходить в ходе работы с упорядоченным списком (также можно
написать ряд наследников);
ArrayList: IList – класс упорядоченного списка на основе
массива;
LinkedList: IList – класс упорядоченного списка на основе
связного списка;
UnmutableList: IList – класс неизменяющегося упорядоченного
списка, является оберткой над любым существующим списком
(должен кидаться исключениями на вызов любого метода, изменяющего
список);
ListUtils – класс различных операций над упорядоченным списком;
o методы:
static bool Exists(IList, CheckDelegate);
static T Find(IList, CheckDelegate);
static T FindLast(IList, CheckDelegate);
static int FindIndex(IList, CheckDelegate);
static int FindLastIndex(IList, CheckDelegate);
10
Стр.10