Luan Trovo Furtile - 82680
Lucas Martins Sabadini - 80669
Marcilio Morihiro Açano - 81342
• Lista Circular Duplamente Enca...
• Lista Circular Duplamente Encadeada
• Teoria..................................................................... 03
• A...
• Lista consiste em uma estrutura que permite representar um conjunto de
dados mantendo a sua ordem;
• Não existe o concei...
4
• Está presente na implementação de jogos;
• Representação de inteiros positivos grandes: consiste em
armazenar os dígit...
5
valor1 valor2 valor3
• Permite percorrer a lista nos dois sentidos;
• Facilita percorrer a lista em ordem inversa;
• Cad...
6
• Registro
struct lista{
int dados;
struct lista *prox;
struct lista *ant;};
struct lista *primeiro;
struct lista *ultim...
7
• Inserir
void inserir(int x){
struct lista *aux;
aux=(struct lista*)malloc(sizeof(struct lista));
aux->dados=x;
ultimo-...
8
• Remover
void remover (int x){
int teste=0;
struct lista *aux;
aux=primeiro;
while(aux!=NULL){
if(aux->dados==x){
if(au...
• Uma matriz é dita esparsa quando a maioria de seus elementos
são iguais a zero.
Por exemplo:
• Podemos ver no exemplo ac...
10
• Problemas de engenharia e física (por exemplo, o método das
malhas para resolução de circuitos elétricos ou sistemas ...
• Cada elemento não nulo é mantido simultaneamente em duas listas:
• Uma para sua linha
• Uma para sua coluna
A =
Linha Co...
#define m ... //número de linhas
#define n ... //número de colunas
typedef struct no {
int linha, coluna, valor;
struct no...
void inserir (int i, int j, int k, Rec *lin[], Rec *col[]){
Rec *p; //aponta registro criado
Rec *q, *qa; //ponteiros para...
boolean eliminar (int i, int j, Rec *lin[], Rec *col[]){
Rec *q, *qa;
//remove da lista da coluna j
q = col[j];
qa = NULL;...
15
TENENBAUM, A. M.; AUGENSTEIN, M. J.; LANGSAN, Y. Estruturas de
dados usando c. São Paulo: Makron Books do Brasil, 1995....
Próximos SlideShares
Carregando em…5
×

Estrutura de dados - Lista Circular Duplamente Encadeada e Matriz Esparsa

93 visualizações

Publicada em

Seminário sobre Lista Circular Duplamente Encadeada e Matriz Esparsa apresentado na disciplina de Estrutura de Dados do curso de Engenharia da Computação, do Centro Universitário de Votuporanga - UNIFEV.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
93
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Estrutura de dados - Lista Circular Duplamente Encadeada e Matriz Esparsa

  1. 1. Luan Trovo Furtile - 82680 Lucas Martins Sabadini - 80669 Marcilio Morihiro Açano - 81342 • Lista Circular Duplamente Encadeada • Matriz Esparsa
  2. 2. • Lista Circular Duplamente Encadeada • Teoria..................................................................... 03 • Aplicações.............................................................. 04 • Algoritmo............................................................... 05 • Programa • Registro.......................................................... 06 • Inserir............................................................. 07 • Remover......................................................... 08 • Matriz Esparsa • Teoria..................................................................... 09 • Aplicações.............................................................. 10 • Algoritmo............................................................... 11 • Programa • Registro.......................................................... 12 • Inserir............................................................. 13 • Remover......................................................... 14 • Referências....................................................................... 15
  3. 3. • Lista consiste em uma estrutura que permite representar um conjunto de dados mantendo a sua ordem; • Não existe o conceito de “primeiro ou último”; • Podem ser classificadas como: Estática e Dinâmica. 3 Anterior Valor Próximo Estrutura de um Nó
  4. 4. 4 • Está presente na implementação de jogos; • Representação de inteiros positivos grandes: consiste em armazenar os dígitos da direita para a esquerda numa lista circular (primeiro nó contém o dígito menos significativo, último nó contém o dígito mais significativo).
  5. 5. 5 valor1 valor2 valor3 • Permite percorrer a lista nos dois sentidos; • Facilita percorrer a lista em ordem inversa; • Cada elemento guarda os endereços do próximo e do anterior.
  6. 6. 6 • Registro struct lista{ int dados; struct lista *prox; struct lista *ant;}; struct lista *primeiro; struct lista *ultimo;
  7. 7. 7 • Inserir void inserir(int x){ struct lista *aux; aux=(struct lista*)malloc(sizeof(struct lista)); aux->dados=x; ultimo->prox=aux; aux->ant=ultimo; aux->prox=NULL; ultimo=ultimo->prox; aux=NULL; free(aux);}
  8. 8. 8 • Remover void remover (int x){ int teste=0; struct lista *aux; aux=primeiro; while(aux!=NULL){ if(aux->dados==x){ if(aux->prox==NULL){ printf(“Valor: %dnRemovido! ",aux->dados); ultimo=ultimo->ant; ultimo->prox=NULL; free(aux); aux=NULL; teste=1;} else{ printf(“Valor: %dnRemovidon ",aux->dados); teste=1; aux->ant->prox=aux->prox; aux->prox->ant=aux->ant; free(aux); aux=NULL; } } else{ aux=aux->prox;}} if(teste==0){ printf(“Nenhum valor encontrado!n"); } }
  9. 9. • Uma matriz é dita esparsa quando a maioria de seus elementos são iguais a zero. Por exemplo: • Podemos ver no exemplo acima que muito espaço na memória seria economizado se apenas os elementos não nulos fossem armazenados. A = 9
  10. 10. 10 • Problemas de engenharia e física (por exemplo, o método das malhas para resolução de circuitos elétricos ou sistemas de equações lineares); • Aplicação em computação: armazenamento de dados (planilhas eletrônicas); • A matriz esparsa é implementada através de um conjunto de listas ligadas que apontam para elementos diferentes de zero. De forma que os elementos que possuem valor zero não são armazenados.
  11. 11. • Cada elemento não nulo é mantido simultaneamente em duas listas: • Uma para sua linha • Uma para sua coluna A = Linha Coluna Valor ProxLinha ProxColuna Estrutura de um Nó Considere a seguinte matriz: 1 1 3 lin[1] col[1] 1 3 2 2 1 -1lin[2] lin[3] 3 3 5 col[2] 11 col[3]
  12. 12. #define m ... //número de linhas #define n ... //número de colunas typedef struct no { int linha, coluna, valor; struct no *proxlin, *proxcol; } no; typedef struct { no *lin[m], *col[n]; } MatrizEsparsa; • Registro 12
  13. 13. void inserir (int i, int j, int k, Rec *lin[], Rec *col[]){ Rec *p; //aponta registro criado Rec *q, *qa; //ponteiros para percorrer listas p = malloc(sizeof(Rec)); p->linha = i; p->coluna = j; p->valor = k; //inserir na lista da coluna j q = col[j]; qa = NULL; while (q != NULL){ if (q->linha < i){ qa = q; q = q->proxcol; } else{ //achou a coluna maior if (qa = NULL) //inserir como primeiro da linha i lin[i] = p; else qa->proxcol= p; //inserir entre qa e q p-> proxcol = q; break; } } //inserir como último da lista lin if (q == NULL); if (qa == NULL) lin[i] = p; else //após qa qa->proxcol= p; } • Inserir 13
  14. 14. boolean eliminar (int i, int j, Rec *lin[], Rec *col[]){ Rec *q, *qa; //remove da lista da coluna j q = col[j]; qa = NULL; while (q != NULL){ if(q->linha <i){ qa = q; q = q->proxlin; } else{ //achou a linha if (qa == NULL) //remove da primeiraposição da coluna j col[j] = q->proxlin; else //remove ligações para q qa->proxlin = q->proxlin; break; } } //se não achou elemento retorna False if (q == NULL) return false; //remove da lista da linha i q = lin[i]; qa = NULL; while(q !=NULL){ if (q->coluna < j){ qa = q; q = q->proxcol; } else{ //achou coluna if (ga == NULL) lin[i] = q->proxcol; //removeda primeira posição da linha else //remove ligações paraq qa->proxcol =q->proxcol; break; } } //libera a posição apontada por q return false; } • Remover 14
  15. 15. 15 TENENBAUM, A. M.; AUGENSTEIN, M. J.; LANGSAN, Y. Estruturas de dados usando c. São Paulo: Makron Books do Brasil, 1995. 884p. PEREIRA, S. D. L. Estruturas de dados fundamentais: conceitos e aplicações. 5. ed. São Paulo: Erica, 2001. 238p. SZWARCFITER, J. L.; MARKENZON, L. Estruturas de dados e seus algoritmos. 2. ed. Rio de Janeiro: Ltc, 1994. 320p. MIRANDA, Warlisson. Matrizes - Definição e exemplos. Disponível em: <http://www.warlisson.com.br/teoria/matrizes-definicao-e- exemplos>. Acesso em 27 ago. 2013.

×