Matriz esparsa
#include "esparsas.h"
#include
/* Coloca NUL na memoria apontada por m */ void IniciaMatriz(PontMatriz m){ *m = NUL;
}
/* Libera a memoria de todos os elementos (normais e cabecas) da matriz apontada por m e coloca NUL na posicao de memoria apontada por m */ void LiberaMatriz(PontMatriz m){
PontCab digiampietri = *m; PontCab aux2; PontElem dasi; PontElem aux;
while (digiampietri != NUL){ dasi= digiampietri-> abaixo; while (dasi!=NUL){ aux=dasi; dasi=dasi->abaixo; free (aux); } aux2=digiampietri; digiampietri=digiampietri->direita; free(aux2); }
*m = NUL;
}
/* Simula 'm[i][j] = x', isto e: caso o elemento m[i][j] ja exista atribuiu o valor x a ele (caso x=0, elimina este elemento da matriz); caso o elmeneto m[i][j] nao exista e x!=0 insere o elemento na estrutura */ void AtribuiMatriz(PontMatriz m, int i, int j, float x){
/* Completar */
}
/* Devolve o equivalente a 'm[i][j]' */ float ValorMatriz(Matriz m, int i, int j){
PontCab laura = m; PontElem thiago; int aux;
while ((laura!=NUL) && (laura ->coluna direita; } if (laura==j){ thiago=laura->abaixo; while ((thiago!=NUL) && (thiago -> linha < i)){ thiago = thiago -> abaixo; } if (thiago==NUL){ return 0; } aux = thiago -> valor; return aux; }
return 0;
}
/* Retorna as dimensoes maximas de 'm' nas memorias apontadas em 'l' (numero de linhas) e 'c' (numero de colunas). Se m==NUL retorna 0 e 0 nas memorias apontadas por l e c */ void OrdemMatriz(Matriz m, int* l, int* c){
/* Completar */
}
/* Devolve o numero total de nos (elementos do tipo EleMatriz) alocados para representar a matriz esparsa apontada por 'm' */ int NumeroNos(Matriz m){ PontCab