SlideShare une entreprise Scribd logo
1  sur  10
Télécharger pour lire hors ligne
Curso Superior de Tecnologia em Telemática
                          Programação e Estruturas de Dados

Listas Lineares Duplamente Encadeadas
                                               Copyright©2010
                                               Prof. César Rocha
                                        cesarocha@ifpb.edu.br 1
Objetivos

§ Explorar conceitos importantes acerca das listas
  duplamente encadeadas utilizando a linguagem C
   § Organização e implementação, características,
     vantagens e desvantagens, regras de utilização,
     operações básicas e os algoritmos de implementação
§ Estas estruturas são um pouco mais complicadas
  que as listas encadeadas (módulo anterior)
   § Contudo, tenta superar algumas limitações
     encontradas no TAD supracitado
§ Este módulo também fará uso das regras de criação
  das bibliotecas em práticas de laboratório futuras
                                                             2
Motivação

§ Você deve lembrar que a estrutura lista encadeada,
  vista no módulo anterior, caracterizava-se por um
  encadeamento simples entre os elementos
   § Havia a alocação dinâmica de cada elemento
   § Cada elemento armazenava um único ponteiro para o
     próximo elemento da lista
§ Lembre-se que esta estrutura resolveu algumas das
  limitações encontradas nas listas seqüenciais
   § Pré-dimensionamento da lista
   § Sub-utilização de memória
§ Porém, você pode ter notado que...                     3
Desvantagens Lista Encadeada

Œ Em uma lista encadeada simples, não temos como
 percorrer eficientemente os elementos em ordem
 inversa, isto é, do final para o início da lista
• O encadeamento simples também dificultava a
 remoção de um elemento da lista. Veja abaixo:
Assim, mesmo quando sabíamos qual elemento íamos retirar,      /* Parâmetros: lista = a lis

tínhamos que percorrer a lista, elemento por elemento, até
                                                                                 dado = passa
                                                                                 posição = pos
encontrarmos o elemento anterior.                                   Retorno: 1 em caso de suce
                                                               */

Isso se deve porque, dado um elemento, não tínhamos como       int removerElemento(TListaEnc*
                                                                 TListaEnc aux;
acessar diretamente o seu elemento anterior (ou antecessor)      TListaEnc anterior;

para redirecionar o ponteiro.                                    int contador;
                                                                 // verifica se a lista esta v

Note, na função de remoção, que a solução encontrada foi
                                                                 if(listaVazia(lista)) return


declarar uma variável somente para podermos guardar o
endereço do nó anterior ao elemento a ser removido da lista.                                     4
Conceitos

§ Para solucionar esses problemas, podemos formar o
  que chamamos de listas duplamente encadeadas
  § Semelhante à lista encadeada, mas contém dois
    ponteiros (ou links) na estrutura do nó
  § Cada elemento agora tem um ponteiro para o próximo
    elemento e um ponteiro para o seu elemento anterior
§ Graficamente
L
           João        Maria         Ana         Edu



    § O primeiro nó não possui elemento anterior (o ponteiro
      do elemento anterior terá valor NULL)                 5
Vantagens

§ Isto trará novas oportunidades ao novo TAD:
   ΠDado um elemento, poderemos acessar ambos
    elementos adjacentes: o próximo e o anterior
   • O ponteiro para o elemento anterior, bem como o
    endereço do próximo elemento serão manipulados
    diretamente
   Ž Inserção à direita e à esquerda de um nó qualquer
   • Se tivermos um ponteiro para o último elemento da
    lista, poderemos percorrê-la na ordem inversa
   •Também utilizará a memória de maneira eficiente com
    alocação dinâmica como fez o TAD do módulo anterior
                                                         6
Estruturação dos Dados

§ Este novo TAD possui semelhanças com TListaEnc
§ Representação de cada nó:
  § estrutura contém os campos dado, proximo e anterior
   /* estruturação */
   /* estruturação */              /* estruturação */
                                   /* estruturação */
   typedef struct nolista {
   typedef struct                  typedef struct nolista {
                                   typedef
     int dado;
      int dado;                      int dado;
                                      int
     struct nolista* proximo;
      struct nolista*                struct nolista* proximo;
                                             nolista*
   }no;
   }no;                              struct nolista* anterior;
   typedef no* TListaEnc;
   typedef no* TListaEnc;          }no;
                                   typedef no* TListaDupEnc;


  § Onde:                                          Onde:
                                                   p->dado;
  TListaDupEnc *p        ant    dado   prox        p->prox;
                                                   p->ant;       7
Operações básicas

§ A literatura é unânime quanto às operações básicas
  realizadas numa lista duplamente encadeada:
   Πcriar uma lista vazia
   • verificar se uma lista está vazia
   Ž obter o tamanho da uma lista
   • obter o elemento de uma determinada posição na
    lista
   • obter a posição onde se encontra um determinado
    elemento
   ‘ inserir um novo elemento numa determinada
    posição na lista
   ’ remover um elemento de uma determinada posição
    na lista
                                                       8
Algoritmos em C

§ O que deverá ser feito pelo aluno:
   § Escolha e instalação do ambiente a ser trabalhado no
     laboratório
   § Modelagem deste TAD (dados e operações)
   § Implementação dos algoritmos de operações básicas
     vistos em sala de aula na linguagem C
   § Utilização das regras de modelagem vistas no módulo
     anterior (criação de bibliotecas) e modularização
   § Implantação de código legível e bem documentado
   § Nomes de variáveis condizentes com o problema
   § Prática de laboratório
                                                            9
Para um bom aproveitamento:

§ Codifique os exemplos mostrados nestes slides e
  verifique pontos de dúvidas
§ Resolva todas as questões da prática de
  laboratório de listas duplamente encadeadas
§ Procure o professor ou monitor da disciplina e
  questione conceitos, listas, etc.
§ Não deixe para codificar tudo e acumular assunto
  para a primeira avaliação.
  § Este é apenas um dos assuntos abordados na prova!

                                                        10

Contenu connexe

Tendances

Estrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasEstrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasLeinylson Fontinele
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresPedro Valente
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Natanael Fonseca
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetoresalfredtaddeus
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetrosMaurício Linhares
 
Introdução Programação Funcional
Introdução Programação FuncionalIntrodução Programação Funcional
Introdução Programação FuncionalNatan Mai
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellSérgio Souza Costa
 
Regras de Produção: o Motor de Inferência JESS
Regras de Produção:o Motor de Inferência JESSRegras de Produção:o Motor de Inferência JESS
Regras de Produção: o Motor de Inferência JESSelliando dias
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHASAparicio Junior
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)Helder da Rocha
 

Tendances (20)

Aula 22
Aula 22Aula 22
Aula 22
 
Aula 13
Aula 13Aula 13
Aula 13
 
Aula05
Aula05Aula05
Aula05
 
Estrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasEstrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas Estáticas
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetores
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetores
 
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Pilhas e Filas
Pilhas e FilasPilhas e Filas
Pilhas e Filas
 
Introdução Programação Funcional
Introdução Programação FuncionalIntrodução Programação Funcional
Introdução Programação Funcional
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo Haskell
 
Aula 16
Aula 16Aula 16
Aula 16
 
Regras de Produção: o Motor de Inferência JESS
Regras de Produção:o Motor de Inferência JESSRegras de Produção:o Motor de Inferência JESS
Regras de Produção: o Motor de Inferência JESS
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHAS
 
Pilha e Fila Estática
Pilha e Fila EstáticaPilha e Fila Estática
Pilha e Fila Estática
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
 

En vedette

Listas Lineares - Parte 2
Listas Lineares - Parte 2Listas Lineares - Parte 2
Listas Lineares - Parte 2Artur Barreto
 
Apresentação - Estruturas de Dados
Apresentação - Estruturas de DadosApresentação - Estruturas de Dados
Apresentação - Estruturas de Dadosrodrigopinto77
 
Computer notes - Josephus Problem
Computer notes - Josephus ProblemComputer notes - Josephus Problem
Computer notes - Josephus Problemecomputernotes
 
Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *Alex Camargo
 
Segundo nivel de realidad aumentada
Segundo nivel de realidad aumentadaSegundo nivel de realidad aumentada
Segundo nivel de realidad aumentadaCarlos Cáceres
 
Javascript (parte 2)
Javascript (parte 2)Javascript (parte 2)
Javascript (parte 2)Alex Camargo
 
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)Alex Camargo
 
Interface grafica em_java_parte_i
Interface grafica em_java_parte_iInterface grafica em_java_parte_i
Interface grafica em_java_parte_isamuelthiago
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)Márcio Rizzatto
 

En vedette (20)

Cenovnik kos 2014
Cenovnik kos 2014Cenovnik kos 2014
Cenovnik kos 2014
 
Listas Lineares - Parte 2
Listas Lineares - Parte 2Listas Lineares - Parte 2
Listas Lineares - Parte 2
 
Pged 01
Pged 01Pged 01
Pged 01
 
Java 01
Java 01Java 01
Java 01
 
Pilha ad
Pilha adPilha ad
Pilha ad
 
Apresentação - Estruturas de Dados
Apresentação - Estruturas de DadosApresentação - Estruturas de Dados
Apresentação - Estruturas de Dados
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 
Computer notes - Josephus Problem
Computer notes - Josephus ProblemComputer notes - Josephus Problem
Computer notes - Josephus Problem
 
Pged 06
Pged 06Pged 06
Pged 06
 
Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1
 
Java 07
Java 07Java 07
Java 07
 
Pged 03
Pged 03Pged 03
Pged 03
 
Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *
 
Segundo nivel de realidad aumentada
Segundo nivel de realidad aumentadaSegundo nivel de realidad aumentada
Segundo nivel de realidad aumentada
 
Javascript (parte 2)
Javascript (parte 2)Javascript (parte 2)
Javascript (parte 2)
 
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
 
Interface grafica em_java_parte_i
Interface grafica em_java_parte_iInterface grafica em_java_parte_i
Interface grafica em_java_parte_i
 
Pged 02
Pged 02Pged 02
Pged 02
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)
 
Estruturas
EstruturasEstruturas
Estruturas
 

Similaire à Listas Duplamente Encadeadas em C

Similaire à Listas Duplamente Encadeadas em C (20)

Top0
Top0Top0
Top0
 
Top0
Top0Top0
Top0
 
Lista encadeada de inteiros
Lista encadeada de inteirosLista encadeada de inteiros
Lista encadeada de inteiros
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Resumão java
Resumão javaResumão java
Resumão java
 
Estruturas de Dados: Listas, fundamentos.
Estruturas de Dados: Listas, fundamentos.Estruturas de Dados: Listas, fundamentos.
Estruturas de Dados: Listas, fundamentos.
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections
 
Csharp fundamentals
Csharp fundamentalsCsharp fundamentals
Csharp fundamentals
 
Aula 2 2
Aula 2 2 Aula 2 2
Aula 2 2
 
Usar explicação 01
Usar explicação 01Usar explicação 01
Usar explicação 01
 
Usar explicação 01
Usar explicação 01Usar explicação 01
Usar explicação 01
 
Classes Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções JavaClasses Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções Java
 
Classes e Estrutura de Dados
Classes e Estrutura de DadosClasses e Estrutura de Dados
Classes e Estrutura de Dados
 
Java: Collections
Java: CollectionsJava: Collections
Java: Collections
 
Dinamicas
DinamicasDinamicas
Dinamicas
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Seminário - Java Collections
Seminário - Java CollectionsSeminário - Java Collections
Seminário - Java Collections
 
Tutorial aed iii 003 - algoritmo de ordenação shellsort
Tutorial aed iii   003 - algoritmo de ordenação shellsortTutorial aed iii   003 - algoritmo de ordenação shellsort
Tutorial aed iii 003 - algoritmo de ordenação shellsort
 

Plus de samuelthiago

Interface grafica em_java_parte_v
Interface grafica em_java_parte_vInterface grafica em_java_parte_v
Interface grafica em_java_parte_vsamuelthiago
 
Interface grafica em_java_parte_iv
Interface grafica em_java_parte_ivInterface grafica em_java_parte_iv
Interface grafica em_java_parte_ivsamuelthiago
 
Interface grafica em_java_parte_iii
Interface grafica em_java_parte_iiiInterface grafica em_java_parte_iii
Interface grafica em_java_parte_iiisamuelthiago
 
Interface grafica em_java_parte_ii
Interface grafica em_java_parte_iiInterface grafica em_java_parte_ii
Interface grafica em_java_parte_iisamuelthiago
 
Poo interacao entre_objetos_blue_j_ii
Poo interacao entre_objetos_blue_j_iiPoo interacao entre_objetos_blue_j_ii
Poo interacao entre_objetos_blue_j_iisamuelthiago
 
Introducao a poo_com_blue_j
Introducao a poo_com_blue_jIntroducao a poo_com_blue_j
Introducao a poo_com_blue_jsamuelthiago
 
Projeto calculadora em_java
Projeto calculadora em_javaProjeto calculadora em_java
Projeto calculadora em_javasamuelthiago
 
Introducao a poo_com_blue_j
Introducao a poo_com_blue_jIntroducao a poo_com_blue_j
Introducao a poo_com_blue_jsamuelthiago
 
01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)samuelthiago
 

Plus de samuelthiago (20)

Eclipse i (1)
Eclipse i (1)Eclipse i (1)
Eclipse i (1)
 
Html básico
Html básicoHtml básico
Html básico
 
Interface grafica em_java_parte_v
Interface grafica em_java_parte_vInterface grafica em_java_parte_v
Interface grafica em_java_parte_v
 
Interface grafica em_java_parte_iv
Interface grafica em_java_parte_ivInterface grafica em_java_parte_iv
Interface grafica em_java_parte_iv
 
Interface grafica em_java_parte_iii
Interface grafica em_java_parte_iiiInterface grafica em_java_parte_iii
Interface grafica em_java_parte_iii
 
Interface grafica em_java_parte_ii
Interface grafica em_java_parte_iiInterface grafica em_java_parte_ii
Interface grafica em_java_parte_ii
 
Poo interacao entre_objetos_blue_j_ii
Poo interacao entre_objetos_blue_j_iiPoo interacao entre_objetos_blue_j_ii
Poo interacao entre_objetos_blue_j_ii
 
Introducao a poo_com_blue_j
Introducao a poo_com_blue_jIntroducao a poo_com_blue_j
Introducao a poo_com_blue_j
 
Projeto calculadora em_java
Projeto calculadora em_javaProjeto calculadora em_java
Projeto calculadora em_java
 
Introducao a poo_com_blue_j
Introducao a poo_com_blue_jIntroducao a poo_com_blue_j
Introducao a poo_com_blue_j
 
01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)
 
Java 08
Java 08Java 08
Java 08
 
Java 06
Java 06Java 06
Java 06
 
Java 05
Java 05Java 05
Java 05
 
Java 04
Java 04Java 04
Java 04
 
Java 03
Java 03Java 03
Java 03
 
Java 02
Java 02Java 02
Java 02
 
Pged 08
Pged 08Pged 08
Pged 08
 
Pged 07
Pged 07Pged 07
Pged 07
 
Lista 03
Lista 03Lista 03
Lista 03
 

Listas Duplamente Encadeadas em C

  • 1. Curso Superior de Tecnologia em Telemática Programação e Estruturas de Dados Listas Lineares Duplamente Encadeadas Copyright©2010 Prof. César Rocha cesarocha@ifpb.edu.br 1
  • 2. Objetivos § Explorar conceitos importantes acerca das listas duplamente encadeadas utilizando a linguagem C § Organização e implementação, características, vantagens e desvantagens, regras de utilização, operações básicas e os algoritmos de implementação § Estas estruturas são um pouco mais complicadas que as listas encadeadas (módulo anterior) § Contudo, tenta superar algumas limitações encontradas no TAD supracitado § Este módulo também fará uso das regras de criação das bibliotecas em práticas de laboratório futuras 2
  • 3. Motivação § Você deve lembrar que a estrutura lista encadeada, vista no módulo anterior, caracterizava-se por um encadeamento simples entre os elementos § Havia a alocação dinâmica de cada elemento § Cada elemento armazenava um único ponteiro para o próximo elemento da lista § Lembre-se que esta estrutura resolveu algumas das limitações encontradas nas listas seqüenciais § Pré-dimensionamento da lista § Sub-utilização de memória § Porém, você pode ter notado que... 3
  • 4. Desvantagens Lista Encadeada Œ Em uma lista encadeada simples, não temos como percorrer eficientemente os elementos em ordem inversa, isto é, do final para o início da lista • O encadeamento simples também dificultava a remoção de um elemento da lista. Veja abaixo: Assim, mesmo quando sabíamos qual elemento íamos retirar, /* Parâmetros: lista = a lis tínhamos que percorrer a lista, elemento por elemento, até dado = passa posição = pos encontrarmos o elemento anterior. Retorno: 1 em caso de suce */ Isso se deve porque, dado um elemento, não tínhamos como int removerElemento(TListaEnc* TListaEnc aux; acessar diretamente o seu elemento anterior (ou antecessor) TListaEnc anterior; para redirecionar o ponteiro. int contador; // verifica se a lista esta v Note, na função de remoção, que a solução encontrada foi if(listaVazia(lista)) return declarar uma variável somente para podermos guardar o endereço do nó anterior ao elemento a ser removido da lista. 4
  • 5. Conceitos § Para solucionar esses problemas, podemos formar o que chamamos de listas duplamente encadeadas § Semelhante à lista encadeada, mas contém dois ponteiros (ou links) na estrutura do nó § Cada elemento agora tem um ponteiro para o próximo elemento e um ponteiro para o seu elemento anterior § Graficamente L João Maria Ana Edu § O primeiro nó não possui elemento anterior (o ponteiro do elemento anterior terá valor NULL) 5
  • 6. Vantagens § Isto trará novas oportunidades ao novo TAD: Œ Dado um elemento, poderemos acessar ambos elementos adjacentes: o próximo e o anterior • O ponteiro para o elemento anterior, bem como o endereço do próximo elemento serão manipulados diretamente Ž Inserção à direita e à esquerda de um nó qualquer • Se tivermos um ponteiro para o último elemento da lista, poderemos percorrê-la na ordem inversa •Também utilizará a memória de maneira eficiente com alocação dinâmica como fez o TAD do módulo anterior 6
  • 7. Estruturação dos Dados § Este novo TAD possui semelhanças com TListaEnc § Representação de cada nó: § estrutura contém os campos dado, proximo e anterior /* estruturação */ /* estruturação */ /* estruturação */ /* estruturação */ typedef struct nolista { typedef struct typedef struct nolista { typedef int dado; int dado; int dado; int struct nolista* proximo; struct nolista* struct nolista* proximo; nolista* }no; }no; struct nolista* anterior; typedef no* TListaEnc; typedef no* TListaEnc; }no; typedef no* TListaDupEnc; § Onde: Onde: p->dado; TListaDupEnc *p ant dado prox p->prox; p->ant; 7
  • 8. Operações básicas § A literatura é unânime quanto às operações básicas realizadas numa lista duplamente encadeada: Œ criar uma lista vazia • verificar se uma lista está vazia Ž obter o tamanho da uma lista • obter o elemento de uma determinada posição na lista • obter a posição onde se encontra um determinado elemento ‘ inserir um novo elemento numa determinada posição na lista ’ remover um elemento de uma determinada posição na lista 8
  • 9. Algoritmos em C § O que deverá ser feito pelo aluno: § Escolha e instalação do ambiente a ser trabalhado no laboratório § Modelagem deste TAD (dados e operações) § Implementação dos algoritmos de operações básicas vistos em sala de aula na linguagem C § Utilização das regras de modelagem vistas no módulo anterior (criação de bibliotecas) e modularização § Implantação de código legível e bem documentado § Nomes de variáveis condizentes com o problema § Prática de laboratório 9
  • 10. Para um bom aproveitamento: § Codifique os exemplos mostrados nestes slides e verifique pontos de dúvidas § Resolva todas as questões da prática de laboratório de listas duplamente encadeadas § Procure o professor ou monitor da disciplina e questione conceitos, listas, etc. § Não deixe para codificar tudo e acumular assunto para a primeira avaliação. § Este é apenas um dos assuntos abordados na prova! 10