ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
3.3.3.Использование класса «Динамический список» для
хранения разреженных матриц
Разреженной называется матрица, которая содержит большое
количество нулевых элементов. Такие матрицы нередко возникают в
задачах линейной алгебры, математической физики и оптимизации.
Хранение этих матриц традиционным способом требует существенных
затрат памяти. Особенно это неэффективно при больших размерах
матрицы и большом количестве нулевых элементов. В этом случае
матрицу можно хранить в виде списка, содержащего только ненулевые
элементы.
Для представления разреженной матрицы можно использовать
следующую систему классов:
• класс для хранения одного элемента матрицы, который содержит
индексы этого элемента и его значение (MatrixElement);
• класс для хранения элемента матрицы в списке, содержащий объект
класса MatrixElement и адрес следующего элемента списка
(ListElement);
• класс представления всей матрицы в виде списка, содержащий
размеры матрицы, количество ненулевых элементов и адрес первого
элемента списка (MatrixList);
• классы исключений BadIndexException, BadDimension-
Exception, NonSquareMatrixException.
Приведем объявления этих классов:
// предварительное объявление класса список
class MatrixList;
// класс одного элемента матрицы
class MatrixElement
{
private:
int i, j; // индексы элемента
double value; // значение элемента
friend class MatrixList;
public:
// конструктор элемента матрицы
MatrixElement(int, int, double);
// дружественные функции ввода/вывода
// элемента матрицы
167
Объектно-ориентированное программирование на С++
3.3.3.Использование класса «Динамический список» для
хранения разреженных матриц
Разреженной называется матрица, которая содержит большое
количество нулевых элементов. Такие матрицы нередко возникают в
задачах линейной алгебры, математической физики и оптимизации.
Хранение этих матриц традиционным способом требует существенных
затрат памяти. Особенно это неэффективно при больших размерах
матрицы и большом количестве нулевых элементов. В этом случае
матрицу можно хранить в виде списка, содержащего только ненулевые
элементы.
Для представления разреженной матрицы можно использовать
следующую систему классов:
• класс для хранения одного элемента матрицы, который содержит
индексы этого элемента и его значение (MatrixElement);
• класс для хранения элемента матрицы в списке, содержащий объект
класса MatrixElement и адрес следующего элемента списка
(ListElement);
• класс представления всей матрицы в виде списка, содержащий
размеры матрицы, количество ненулевых элементов и адрес первого
элемента списка (MatrixList);
• классы исключений BadIndexException, BadDimension-
Exception, NonSquareMatrixException.
Приведем объявления этих классов:
// предварительное объявление класса список
class MatrixList;
// класс одного элемента матрицы
class MatrixElement
{
private:
int i, j; // индексы элемента
double value; // значение элемента
friend class MatrixList;
public:
// конструктор элемента матрицы
MatrixElement(int, int, double);
// дружественные функции ввода/вывода
// элемента матрицы
167
Страницы
- « первая
- ‹ предыдущая
- …
- 165
- 166
- 167
- 168
- 169
- …
- следующая ›
- последняя »
