#include <iostream> using namespace std; /*稀疏矩阵十字链表 的数据结构*/ //稀疏矩阵 十字链表元素结构 typedef struct ELEM { //三元组 int row; int col; int item; //指针 ELEM* right; ELEM* down; }ELEMENT; typedef ELEMENT* pElem; // 稀疏矩阵行列头节点数组 typedef struct { // int mu;//稀疏矩阵行数 int nu;//列数 int tu;//非0元素个数 // pElem *rhead;//这是数据元素指针的指针,即**Elem。 这个指针指向一个数组,而数组元素是另一种指针。这就叫指针的指针。 pElem *chead; }CrossList; /*所有的算法都是基于数据结构的*/ //初始化十字链表结构,初始化属性,分配内存 void initMat(CrossList* C, int mu, int nu, int tu) { C->mu = mu; C->nu = nu; C->tu = tu; C->rhead = new pElem[mu]; C->chead = new pElem[nu]; } /*销毁是初始化的逆操作,即释放内存,设置属性为0*/ void destroyMat(CrossList * C) { delete []C->chead;//释放数组所占内存。特殊点:这个数组存放的是一些指针。 delete []C->rhead; C->mu =0; C->nu =0; C->tu =0; } void main() { CrossList C; initMat(&C, 3,3,3); destroyMat(&C); }