ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
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
- …
- следующая ›
- последняя »