aula 14 estrutura de dados - matriz esparsa · aula 14 estrutura de dados matriz esparsa norton t....
TRANSCRIPT
![Page 1: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/1.jpg)
AULA 14ESTRUTURA DE DADOS
Matriz esparsa
Norton T. Roman & Luciano A. Digiampietri
![Page 2: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/2.jpg)
Matriz
Uma matriz bidimensional é um conjunto deelementos (ou tabela) composta por m linhas e ncolunas.
- Em computação utilizamos matrizes pararepresentar diferentes tipos de dados (dadosnuméricos, imagens, etc.)
![Page 3: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/3.jpg)
Matriz
Uma matriz bidimensional é um conjunto deelementos (ou tabela) composta por m linhas e ncolunas.
- Em computação utilizamos matrizes pararepresentar diferentes tipos de dados (dadosnuméricos, imagens, etc.)
![Page 4: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/4.jpg)
Matriz esparsa
É uma matriz na qual a grande maioria de seuselementos possui um valor padrão (por exemplozero) ou são nulos ou faltantes.
- Por exemplo, uma matriz que representa ocontorno de uma imagem em preto e branco- Seria um desperdício gastar m x n posições dememória sendo que apenas uma pequena parcelados elementos tem valor diferente de zero
![Page 5: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/5.jpg)
Matriz esparsaÉ uma matriz na qual a grande maioria de seuselementos possui um valor padrão (por exemplozero) ou são nulos ou faltantes.
- Por exemplo, uma matriz que representa ocontorno de uma imagem em preto e branco- Seria um desperdício gastar m x n posições dememória sendo que apenas uma pequena parcelados elementos tem valor diferente de zero
![Page 6: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/6.jpg)
Matriz esparsaÉ uma matriz na qual a grande maioria de seuselementos possui um valor padrão (por exemplozero) ou são nulos ou faltantes.
- Por exemplo, uma matriz que representa ocontorno de uma imagem em preto e branco
- Seria um desperdício gastar m x n posições dememória sendo que apenas uma pequena parcelados elementos tem valor diferente de zero
![Page 7: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/7.jpg)
Matriz esparsaÉ uma matriz na qual a grande maioria de seuselementos possui um valor padrão (por exemplozero) ou são nulos ou faltantes.
- Por exemplo, uma matriz que representa ocontorno de uma imagem em preto e branco- Seria um desperdício gastar m x n posições dememória sendo que apenas uma pequena parcelados elementos tem valor diferente de zero
![Page 8: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/8.jpg)
Matriz esparsa
Para evitar o desperdício de memória (eeventualmente de processamento) criamos umaestrutura específica para gerenciar matrizesesparsas.
- Só serão alocados elementos com valordiferente de zero e alguma estrutura adicional decontrole.
![Page 9: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/9.jpg)
Matriz esparsa
Para evitar o desperdício de memória (eeventualmente de processamento) criamos umaestrutura específica para gerenciar matrizesesparsas.
- Só serão alocados elementos com valordiferente de zero e alguma estrutura adicional decontrole.
![Page 10: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/10.jpg)
Matriz esparsa - implementação
Cada linha da matriz será representada por umalista ligada que só conterá elementos com valoresdiferentes de zero;Teremos um arranjo de listas ligadas.
![Page 11: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/11.jpg)
Matriz esparsa - implementação
Cada linha da matriz será representada por umalista ligada que só conterá elementos com valoresdiferentes de zero;
Teremos um arranjo de listas ligadas.
![Page 12: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/12.jpg)
Matriz esparsa - implementação
Cada linha da matriz será representada por umalista ligada que só conterá elementos com valoresdiferentes de zero;Teremos um arranjo de listas ligadas.
![Page 13: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/13.jpg)
Matriz esparsa - implementação
Temos uma matriz com muitos zeros.
![Page 14: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/14.jpg)
Matriz esparsa - implementação
Queremos armazenar apenas os valores diferentes de zero.
![Page 15: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/15.jpg)
Matriz esparsa - implementação
Queremos armazenar apenas os valores diferentes de zero.
![Page 16: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/16.jpg)
Matriz esparsa - implementação
Criaremos listas de elementos diferentes de zero.
![Page 17: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/17.jpg)
Matriz esparsa - implementação
Cada elemento apontará para seu vizinho e saberá sua coluna.
![Page 18: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/18.jpg)
Modelagem
#include <stdio.h>
#include <malloc.h>
typedef struct tempNo {
float valor;
int coluna;
struct tempNo* prox;
} NO;
typedef NO* PONT;
typedef struct {
PONT* A;
int linhas;
int colunas;
} MATRIZ;
![Page 19: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/19.jpg)
Modelagem
#include <stdio.h>
#include <malloc.h>
typedef struct tempNo {
float valor;
int coluna;
struct tempNo* prox;
} NO;
typedef NO* PONT;
typedef struct {
PONT* A;
int linhas;
int colunas;
} MATRIZ;
![Page 20: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/20.jpg)
Modelagem
#include <stdio.h>
#include <malloc.h>
typedef struct tempNo {
float valor;
int coluna;
struct tempNo* prox;
} NO;
typedef NO* PONT;
typedef struct {
PONT* A;
int linhas;
int colunas;
} MATRIZ;
![Page 21: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/21.jpg)
Modelagem
#include <stdio.h>
#include <malloc.h>
typedef struct tempNo {
float valor;
int coluna;
struct tempNo* prox;
} NO;
typedef NO* PONT;
typedef struct {
PONT* A;
int linhas;
int colunas;
} MATRIZ;
![Page 22: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/22.jpg)
Modelagem
![Page 23: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/23.jpg)
Modelagem
![Page 24: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/24.jpg)
Funções de gerenciamento
Implementaremos funções para:Inicializar a matriz (“new matriz[m][n]”)Atribuir um valor (matriz[x ][y ] = valor )Acessar valor (valor = matriz[x ][y ])
![Page 25: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/25.jpg)
Inicialização
Para inicializar nossa matriz esparsa, nósprecisamos:
Acertar o valor dos campos linhas e colunas (istoé, a ordem da matriz passada pelo usuário).Precisamos também criar o arranjo de listasligadas e iniciar cada posição do arranjo com ovalor NULL (indicando que cada lista está vazia).
![Page 26: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/26.jpg)
Inicialização
Para inicializar nossa matriz esparsa, nósprecisamos:
Acertar o valor dos campos linhas e colunas (istoé, a ordem da matriz passada pelo usuário).
Precisamos também criar o arranjo de listasligadas e iniciar cada posição do arranjo com ovalor NULL (indicando que cada lista está vazia).
![Page 27: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/27.jpg)
Inicialização
Para inicializar nossa matriz esparsa, nósprecisamos:
Acertar o valor dos campos linhas e colunas (istoé, a ordem da matriz passada pelo usuário).Precisamos também criar o arranjo de listasligadas e iniciar cada posição do arranjo com ovalor NULL (indicando que cada lista está vazia).
![Page 28: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/28.jpg)
Inicializaçãovoid inicializarMatriz(MATRIZ* m, int lin, int col) {
int i;
m->linhas = lin;
m->colunas = col;
m->A = (PONT*) malloc(lin*sizeof(PONT));
for (i=0;i<lin;i++) m->A[i] = NULL;
}
![Page 29: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/29.jpg)
Inicializaçãovoid inicializarMatriz(MATRIZ* m, int lin, int col) {
int i;
m->linhas = lin;
m->colunas = col;
m->A = (PONT*) malloc(lin*sizeof(PONT));
for (i=0;i<lin;i++) m->A[i] = NULL;
}
![Page 30: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/30.jpg)
Inicializaçãovoid inicializarMatriz(MATRIZ* m, int lin, int col) {
int i;
m->linhas = lin;
m->colunas = col;
m->A = (PONT*) malloc(lin*sizeof(PONT));
for (i=0;i<lin;i++) m->A[i] = NULL;
}
![Page 31: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/31.jpg)
Inicializaçãovoid inicializarMatriz(MATRIZ* m, int lin, int col) {
int i;
m->linhas = lin;
m->colunas = col;
m->A = (PONT*) malloc(lin*sizeof(PONT));
for (i=0;i<lin;i++) m->A[i] = NULL;
}
![Page 32: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/32.jpg)
Inicializaçãovoid inicializarMatriz(MATRIZ* m, int lin, int col) {
int i;
m->linhas = lin;
m->colunas = col;
m->A = (PONT*) malloc(lin*sizeof(PONT));
for (i=0;i<lin;i++) m->A[i] = NULL;
}
![Page 33: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/33.jpg)
Atribuir valorO usuário nos passa: o endereço da matriz, a linha,a coluna e o valor a ser colocado na respectivaposição da matriz:
Se não houver nenhum nó na posição e o valor for diferentede zero temos que inserir um novo nó na respectiva listaligada.Se já existir um nó na posição e o valor for diferente de zerotemos que substituir o valor do nó.Se já existir um nó na posição e o valor for igual a zerotemos que excluir o nó de sua lista.
![Page 34: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/34.jpg)
Atribuir valorO usuário nos passa: o endereço da matriz, a linha,a coluna e o valor a ser colocado na respectivaposição da matriz:
Se não houver nenhum nó na posição e o valor for diferentede zero temos que inserir um novo nó na respectiva listaligada.
Se já existir um nó na posição e o valor for diferente de zerotemos que substituir o valor do nó.Se já existir um nó na posição e o valor for igual a zerotemos que excluir o nó de sua lista.
![Page 35: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/35.jpg)
Atribuir valorO usuário nos passa: o endereço da matriz, a linha,a coluna e o valor a ser colocado na respectivaposição da matriz:
Se não houver nenhum nó na posição e o valor for diferentede zero temos que inserir um novo nó na respectiva listaligada.Se já existir um nó na posição e o valor for diferente de zerotemos que substituir o valor do nó.
Se já existir um nó na posição e o valor for igual a zerotemos que excluir o nó de sua lista.
![Page 36: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/36.jpg)
Atribuir valorO usuário nos passa: o endereço da matriz, a linha,a coluna e o valor a ser colocado na respectivaposição da matriz:
Se não houver nenhum nó na posição e o valor for diferentede zero temos que inserir um novo nó na respectiva listaligada.Se já existir um nó na posição e o valor for diferente de zerotemos que substituir o valor do nó.Se já existir um nó na posição e o valor for igual a zerotemos que excluir o nó de sua lista.
![Page 37: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/37.jpg)
Atribuir valor - buscabool AtribuiMatriz(MATRIZ* m,int lin, int col,
float val) {
if (lin<0 || lin >= m->linhas ||
col<0 || col >= m->colunas) return false;
PONT ant = NULL;
PONT atual = m->A[lin];
while (atual != NULL && atual->coluna<col) {
ant = atual;
atual = atual->prox;
}
![Page 38: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/38.jpg)
Atribuir valor - buscabool AtribuiMatriz(MATRIZ* m,int lin, int col,
float val) {
if (lin<0 || lin >= m->linhas ||
col<0 || col >= m->colunas) return false;
PONT ant = NULL;
PONT atual = m->A[lin];
while (atual != NULL && atual->coluna<col) {
ant = atual;
atual = atual->prox;
}
![Page 39: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/39.jpg)
Atribuir valor - buscabool AtribuiMatriz(MATRIZ* m,int lin, int col,
float val) {
if (lin<0 || lin >= m->linhas ||
col<0 || col >= m->colunas) return false;
PONT ant = NULL;
PONT atual = m->A[lin];
while (atual != NULL && atual->coluna<col) {
ant = atual;
atual = atual->prox;
}
![Page 40: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/40.jpg)
Atribuir valor - buscabool AtribuiMatriz(MATRIZ* m,int lin, int col,
float val) {
if (lin<0 || lin >= m->linhas ||
col<0 || col >= m->colunas) return false;
PONT ant = NULL;
PONT atual = m->A[lin];
while (atual != NULL && atual->coluna<col) {
ant = atual;
atual = atual->prox;
}
![Page 41: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/41.jpg)
Atribuir valor - nó existe
if (atual != NULL && atual->coluna == col) {
if (val == 0) {
if (ant==NULL) m->A[lin] = atual->prox;
else ant->prox = atual->prox;
free(atual);
}
else atual->valor = val;
}
![Page 42: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/42.jpg)
Atribuir valor - nó existe
if (atual != NULL && atual->coluna == col) {
if (val == 0) {
if (ant==NULL) m->A[lin] = atual->prox;
else ant->prox = atual->prox;
free(atual);
}
else atual->valor = val;
}
![Page 43: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/43.jpg)
Atribuir valor - nó existe
if (atual != NULL && atual->coluna == col) {
if (val == 0) {
if (ant==NULL) m->A[lin] = atual->prox;
else ant->prox = atual->prox;
free(atual);
}
else atual->valor = val;
}
![Page 44: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/44.jpg)
Atribuir valor - nó existe
if (atual != NULL && atual->coluna == col) {
if (val == 0) {
if (ant==NULL) m->A[lin] = atual->prox;
else ant->prox = atual->prox;
free(atual);
}
else atual->valor = val;
}
![Page 45: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/45.jpg)
Atribuir valor - nó existe
if (atual != NULL && atual->coluna == col) {
if (val == 0) {
if (ant==NULL) m->A[lin] = atual->prox;
else ant->prox = atual->prox;
free(atual);
}
else atual->valor = val;
}
![Page 46: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/46.jpg)
Atribuir valor - nó existe
if (atual != NULL && atual->coluna == col) {
if (val == 0) {
if (ant==NULL) m->A[lin] = atual->prox;
else ant->prox = atual->prox;
free(atual);
}
else atual->valor = val;
}
![Page 47: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/47.jpg)
Atribuir valor - nó não existeelse if (val != 0) {
PONT novo = (PONT) malloc(sizeof(NO));
novo->coluna = col;
novo->valor = val;
novo->prox = atual;
if (ant == NULL) m->A[lin] = novo;
else ant->prox = novo;
}
return true;
}
![Page 48: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/48.jpg)
Atribuir valor - nó não existeelse if (val != 0) {
PONT novo = (PONT) malloc(sizeof(NO));
novo->coluna = col;
novo->valor = val;
novo->prox = atual;
if (ant == NULL) m->A[lin] = novo;
else ant->prox = novo;
}
return true;
}
![Page 49: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/49.jpg)
Atribuir valor - nó não existeelse if (val != 0) {
PONT novo = (PONT) malloc(sizeof(NO));
novo->coluna = col;
novo->valor = val;
novo->prox = atual;
if (ant == NULL) m->A[lin] = novo;
else ant->prox = novo;
}
return true;
}
![Page 50: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/50.jpg)
Atribuir valor - nó não existeelse if (val != 0) {
PONT novo = (PONT) malloc(sizeof(NO));
novo->coluna = col;
novo->valor = val;
novo->prox = atual;
if (ant == NULL) m->A[lin] = novo;
else ant->prox = novo;
}
return true;
}
![Page 51: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/51.jpg)
Atribuir valor - nó não existeelse if (val != 0) {
PONT novo = (PONT) malloc(sizeof(NO));
novo->coluna = col;
novo->valor = val;
novo->prox = atual;
if (ant == NULL) m->A[lin] = novo;
else ant->prox = novo;
}
return true;
}
![Page 52: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/52.jpg)
Atribuir valor - nó não existeelse if (val != 0) {
PONT novo = (PONT) malloc(sizeof(NO));
novo->coluna = col;
novo->valor = val;
novo->prox = atual;
if (ant == NULL) m->A[lin] = novo;
else ant->prox = novo;
}
return true;
}
![Page 53: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/53.jpg)
Atribuir valor - nó não existeelse if (val != 0) {
PONT novo = (PONT) malloc(sizeof(NO));
novo->coluna = col;
novo->valor = val;
novo->prox = atual;
if (ant == NULL) m->A[lin] = novo;
else ant->prox = novo;
}
return true;
}
![Page 54: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/54.jpg)
Acessar valor
O usuário nos passa: o endereço da matriz, a linhae a coluna e a função deve retornar o valor darespectiva posição:
Se não houver um nó na posição então retornar zero;Caso contrário, retornar o valor do nó.
![Page 55: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/55.jpg)
Acessar valor
O usuário nos passa: o endereço da matriz, a linhae a coluna e a função deve retornar o valor darespectiva posição:
Se não houver um nó na posição então retornar zero;
Caso contrário, retornar o valor do nó.
![Page 56: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/56.jpg)
Acessar valor
O usuário nos passa: o endereço da matriz, a linhae a coluna e a função deve retornar o valor darespectiva posição:
Se não houver um nó na posição então retornar zero;Caso contrário, retornar o valor do nó.
![Page 57: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/57.jpg)
Acessar valorfloat ValorMatriz(MATRIZ* m, int lin, int col) {
if (lin<0 || lin>=m->linhas || col<0 ||
col >= m->colunas) return 0;
PONT atual = m->A[lin];
while (atual != NULL && atual->coluna < col)
atual = atual->prox;
if (atual !=NULL && atual->coluna == col)
return atual->valor;
return 0;
}
![Page 58: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/58.jpg)
Acessar valorfloat ValorMatriz(MATRIZ* m, int lin, int col) {
if (lin<0 || lin>=m->linhas || col<0 ||
col >= m->colunas) return 0;
PONT atual = m->A[lin];
while (atual != NULL && atual->coluna < col)
atual = atual->prox;
if (atual !=NULL && atual->coluna == col)
return atual->valor;
return 0;
}
![Page 59: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/59.jpg)
Acessar valorfloat ValorMatriz(MATRIZ* m, int lin, int col) {
if (lin<0 || lin>=m->linhas || col<0 ||
col >= m->colunas) return 0;
PONT atual = m->A[lin];
while (atual != NULL && atual->coluna < col)
atual = atual->prox;
if (atual !=NULL && atual->coluna == col)
return atual->valor;
return 0;
}
![Page 60: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/60.jpg)
Acessar valorfloat ValorMatriz(MATRIZ* m, int lin, int col) {
if (lin<0 || lin>=m->linhas || col<0 ||
col >= m->colunas) return 0;
PONT atual = m->A[lin];
while (atual != NULL && atual->coluna < col)
atual = atual->prox;
if (atual !=NULL && atual->coluna == col)
return atual->valor;
return 0;
}
![Page 61: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/61.jpg)
Acessar valorfloat ValorMatriz(MATRIZ* m, int lin, int col) {
if (lin<0 || lin>=m->linhas || col<0 ||
col >= m->colunas) return 0;
PONT atual = m->A[lin];
while (atual != NULL && atual->coluna < col)
atual = atual->prox;
if (atual !=NULL && atual->coluna == col)
return atual->valor;
return 0;
}
![Page 62: AULA 14 ESTRUTURA DE DADOS - Matriz esparsa · AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri. Matriz Umamatriz bidimensionalé um conjunto de](https://reader030.vdocuments.site/reader030/viewer/2022021809/5c6431a009d3f2c8418c516b/html5/thumbnails/62.jpg)
AULA 14ESTRUTURA DE DADOS
Matriz esparsa
Norton T. Roman & Luciano A. Digiampietri