Nenhuma animação disponível para revisar!
Listas Cruzadas
HUB
1/1
Linhas:
Colunas:
NoLista
{
valor : String;
abaixo : NoLista;
direita : NoLista;
linha : inteiro;
coluna : inteiro;
}
EstruturaListaCruzada
{
Colunas : vetor de NoLista;
Linhas : vetor de NoLista;
}
N_LINHAS : inteiro;
N_COLUNAS : inteiro;
leitorColuna,leitorLinha : NoLista;
anteriorColuna,anteriorLinha : NoLista;
i,j : inteiro;
 
novo : NoLista;
novo := alocar();
novo.linha := Linha;
novo.coluna := Coluna;
novo.info := INFO;
 
leitorColuna := Colunas[Coluna];
leitorLinha := Linhas[Linha];
 
Se leitorColuna != nulo então
INICIO
i := Colunas[Coluna].linha;
 
Enquanto leitorColuna.abaixo != nulo e i < Linha faça
INICIO
anteriorColuna := leitorColuna;
leitorColuna := leitorColuna.abaixo;
i := leitorColuna.linha;
FIM
 
Se i == Linha então
INICIO
leitorColuna.info := INFO;
Retornar;
FIM
 
Se leitorColuna.abaixo != nulo então
INICIO
Se anteriorColuna == nulo então
INICIO
novo.abaixo := leitorColuna;
Colunas[Coluna] := novo;
FIM
Senão
INICIO
novo.abaixo := leitorColuna;
anteriorColuna.abaixo := novo;
FIM
FIM
Senão
INICIO
novo.abaixo := nulo;
anteriorColuna.abaixo := novo;
FIM
FIM
Senão
INICIO
Colunas[Coluna] := novo;
novo.abaixo := nulo;
FIM
 
Se leitorLinha != nulo então
INICIO
j := Linhas[Linha].coluna;
 
Enquanto leitorLinha.direita != nulo e j < Coluna faça
INICIO
anteriorLinha := leitorLinha;
leitorLinha := leitorLinha.direita;
j := leitorLinha.coluna;
FIM
 
Se leitorLinha.direita != nulo então
INICIO
Se anteriorLinha == nulo então
INICIO
novo.direita := leitorLinha;
Linhas[Linha] := novo;
FIM
Senão
INICIO
novo.direita := leitorLinha;
anteriorLinha.direita := novo;
FIM
FIM
Senão
INICIO
novo.direita := nulo;
anteriorLinha.direita := novo;
FIM
FIM
Senão
INICIO
Linhas[Linha] := novo;
novo.direita := nulo;
FIM
leitorLinha,anteriorLinha : NoLista;
leitorColuna,anteriorColuna : NoLista;
 
leitorLinha := Linhas[Linha];
 
Enquanto leitorLinha != nulo e leitorLinha.coluna != Coluna faça
INICIO
anteriorLinha := leitorLinha;
leitorLinha := leitorLinha.direita;
FIM
 
Se leitorLinha != nulo então
INICIO
leitorColuna := Colunas[Coluna];
 
Enquanto leitorColuna != leitorLinha faça
INICIO
anteriorColuna := leitorColuna;
leitorColuna := leitorColuna.abaixo;
FIM
 
Se anteriorLinha != nulo então
anteriorLinha.direita := leitorLinha.direita;
Senão
Linhas[Linha] := leitorLinha.direita;
 
Se anteriorColuna != nulo então
anteriorColuna.abaixo := leitorColuna.abaixo;
Senão
Colunas[Coluna] := leitorColuna.abaixo;
FIM
leitor : NoLista;
leitor := Linhas[Linha];
 
Enquanto leitor != nulo então
INICIO
Se leitor.coluna == Coluna então
Retornar leitor.info;
leitor := leitor.direita;
FIM
Retornar nulo;
Nenhuma animação disponível para revisar!
Executando animação ...
Aguarde encerrar !
Última animação que foi executada:
| # | Descrição |
|---|
Limpar entrada ao final da animação
Chance de gerar número negativo na entrada aleatória:
Ocultar Ponteiros Nulos
Impedir inserção de valores repetidos
Mostrar Descritores
Usar delimitador em chaves
Contar linhas brancas
Pseudo-código
Informações da Estrutura
Entradas Programadas
Rever Passos
Histórico
Listas Cruzadas