我需要使用C:
中的喜欢列表来表示稀疏矩阵结构定义如下;
typedef struct matrix{
struct matrix *right;
struct matrix *below;
int rowptr, colptr;
double val;
}Matrix;
我知道右边指的是行的下一个非零元素(下面指向列的非零元素)。
我需要定义这个函数:
Matrix * initiate(void),它使用stdin从.txt文件中读取非零元素(仅包含非零值)。
void print(Matrix *),它使用stdout打印矩阵。
Matrix * add(Matrix *,Matrix *);
void set_elemnt(Matrix * A,int i,int j,double x):赋值A(i,j)= x。
double get_element(Matrix * A,int i,int j);返回A(i,j)。
我不知道定义标题单元格(不包含任何内容),其他单元格表示非零值。 此链接中的此图像代表了我必须做的事情:
到目前为止我所拥有的:
Matrix* initiate(void){
Matrix *A=malloc(sizeof(*A));
A->rowptr=rowptr;
A->colptr=colptr;
A->right=malloc(rowptr * sizeof(*rowptr->right));
A->below=malloc(n * sizeof(*n->col));
return A;
}
对于标题(不包含任何内容的标题),我尝试这样做,但我不知道它是否有用:
Matrix* initiate_1(void){
Matrix *A=malloc(sizeof(*A));
A->rowptr=-1;
A->colptr=-1;
A->val=nan;
A->right=A;
A->below=A;
}
添加矩阵:
Matrix* add(Matrix*,Matrix*){
int i;
Matrix *C = initiate(); //I don't know what to put here
for (int i = 0; ; i++) { //don't know what to put in the middle space
// don't know what to put here
}
}
另外,我认为我可以创建一个只有零的矩阵,但我不确定如何做到这一点以及是否有任何帮助。 如果你能帮助我,我将不胜感激,我几乎不了解数据结构。谢谢!