![Page 1: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/1.jpg)
CES-10 INTRODUÇÃO CES-10 INTRODUÇÃO À COMPUTAÇÃOÀ COMPUTAÇÃO
Capítulo XI Capítulo XI
Noções de Estruturas de Noções de Estruturas de DadosDados
![Page 2: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/2.jpg)
Capítulo XI – Noções de Capítulo XI – Noções de Estruturas de DadosEstruturas de Dados
11.1 – Importância de uma boa 11.1 – Importância de uma boa estruturação de informaçõesestruturação de informações
11.2 – Modelos de armazenamento de 11.2 – Modelos de armazenamento de informaçõesinformações
11.3 – Listas lineares encadeadas11.3 – Listas lineares encadeadas
11.4 – Pilhas e filas11.4 – Pilhas e filas
11.5 – Árvores11.5 – Árvores
![Page 3: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/3.jpg)
11.1 – Importância de uma 11.1 – Importância de uma Boa Estruturação de Boa Estruturação de
InformaçõesInformações Os Os sistemas computacionaissistemas computacionais da atualidade da atualidade
têm capacidade de têm capacidade de armazenararmazenar e e manipularmanipular em altíssima velocidade quantidades imensas em altíssima velocidade quantidades imensas de de informações informações
Das mais diversas Das mais diversas espécies espécies
Para as mais variadas Para as mais variadas aplicações aplicações
Localizadas espalhadamente Localizadas espalhadamente pelo planetapelo planeta
![Page 4: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/4.jpg)
Exemplos de informações: Exemplos de informações:
Medições colhidas em experiências Medições colhidas em experiências científicascientíficas, , sondagens e análise de sondagens e análise de fenômenosfenômenos físicos e físicos e químicosquímicos
Medições colhidas durante Medições colhidas durante cirurgiascirurgias e e informações para informações para diagnoses médicasdiagnoses médicas
Controle de Controle de materiaismateriais e e produtosprodutos na indústria e na indústria e comérciocomércio
OrganogramasOrganogramas e controle de pessoal em e controle de pessoal em empresasempresas
Organização de sistemas Organização de sistemas bancários bancários e de e de bibliotecasbibliotecas
![Page 5: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/5.jpg)
Exemplos de informações:Exemplos de informações:
Confecção e acompanhamento de Confecção e acompanhamento de projetosprojetos
SimulaçãoSimulação de fenômenos físicos, químicos, de fenômenos físicos, químicos, biológicos, psíquicos e sociaisbiológicos, psíquicos e sociais
Cursos, livros e apostilasCursos, livros e apostilas
Jogos, artes, etc.Jogos, artes, etc.
![Page 6: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/6.jpg)
Importância do tempo gasto pelo Importância do tempo gasto pelo computador:computador:
TempoTempo de máquina pode ficar caro (aluguel) de máquina pode ficar caro (aluguel)
CustoCusto proporcional ao proporcional ao tempotempo de utilização de utilização
A A respostaresposta do computador deve ser dada em do computador deve ser dada em tempo hábiltempo hábil
Previsão de Previsão de catástrofes atmosféricascatástrofes atmosféricas
Sistemas computacionais em Sistemas computacionais em tempo realtempo real
![Page 7: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/7.jpg)
Tarefas consumidoras de tempo e memória:Tarefas consumidoras de tempo e memória:
OrdenaçãoOrdenação, , classificaçãoclassificação e e pesquisapesquisa de de informaçõesinformações
LigaçãoLigação entre informações entre informações correlatascorrelatas
InserçãoInserção, , eliminaçãoeliminação e e atualizaçãoatualização de de informaçõesinformações
CompactaçãoCompactação e descompactação de e descompactação de informaçõesinformações
CálculosCálculos matemático-científicos envolvendo matemático-científicos envolvendo imensas matrizes imensas matrizes multidimensionais, etc.multidimensionais, etc.
![Page 8: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/8.jpg)
Crítico:Crítico: quando o quando o universouniverso de informações é de informações é muito muito grandegrande
Eficiente utilização de Eficiente utilização de recursos recursos computacionaiscomputacionais e redução do e redução do tempo de tempo de respostaresposta dependem de dependem de
Boa Boa estruturaçãoestruturação das informações das informações Bons Bons algoritmosalgoritmos para manipulá-las para manipulá-las
Tudo depende da Tudo depende da naturezanatureza das informações e das informações e das das aplicaçõesaplicações
![Page 9: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/9.jpg)
Capítulo XI – Noções de Capítulo XI – Noções de Estruturas de DadosEstruturas de Dados
11.1 – Importância de boa 11.1 – Importância de boa estruturação de informaçõesestruturação de informações
11.2 – Modelos de armazenamento de 11.2 – Modelos de armazenamento de informaçõesinformações
11.3 – Listas lineares encadeadas11.3 – Listas lineares encadeadas
11.4 – Pilhas e filas11.4 – Pilhas e filas
11.5 – Árvores11.5 – Árvores
![Page 10: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/10.jpg)
11.2 – Modelos de 11.2 – Modelos de Armazenamento de Armazenamento de
InformaçõesInformações Há vários Há vários modelosmodelos para visualizar, interpretar e para visualizar, interpretar e
armazenar sistemas de armazenar sistemas de informaçõesinformações
Exemplos:Exemplos:
Listas lineares, Árvores, GrafosListas lineares, Árvores, Grafos
Cada um desses Cada um desses modelosmodelos pode ser implementado pode ser implementado por meio de diversas por meio de diversas estruturas de dadosestruturas de dados alternativasalternativas
A A escolhaescolha de uma de uma estruturaestrutura para um para um modelomodelo, , numa determinada aplicação, afeta a numa determinada aplicação, afeta a eficiênciaeficiência do do programaprograma
![Page 11: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/11.jpg)
11.2.1 – Listas lineares11.2.1 – Listas lineares
Os Os elementoselementos formam uma formam uma sequência linearsequência linear
Cada Cada elementoelemento tem um tem um antecessorantecessor e um e um sucessorsucessor (exceto o primeiro e o último) (exceto o primeiro e o último)
![Page 12: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/12.jpg)
TabelasTabelas em geral podem se enquadrar nesse em geral podem se enquadrar nesse modelomodelo
• Listas telefônicas• Folhas de
pagamento de empregados• Livros de uma
biblioteca• Tabelas de banco
de dados relacional
Cada elemento ocupa uma linha da tabela
![Page 13: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/13.jpg)
11.2.2 – Árvores 11.2.2 – Árvores
Os Os elementoselementos formam uma formam uma hierarquia hierarquia paternapaterna
![Page 14: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/14.jpg)
Cada Cada elementoelemento tem tem um e apenas um pai um e apenas um pai (exceto a raiz)(exceto a raiz)
Cada elemento tem Cada elemento tem zero ou mais filhoszero ou mais filhos
Um Um elementoelemento não pode ter um não pode ter um ancestralancestral como como filhofilho
![Page 15: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/15.jpg)
Exemplos:Exemplos:
Organogramas de empresasOrganogramas de empresas Organização de livros e cursosOrganização de livros e cursos Jogos eliminatórios de um campeonatoJogos eliminatórios de um campeonato Expressões aritméticasExpressões aritméticas Estrutura de um programaEstrutura de um programa
![Page 16: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/16.jpg)
Expressão aritmética:Expressão aritmética:
![Page 17: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/17.jpg)
void main () {void main () {int n, i, p, aux, vetor[50]; int n, i, p, aux, vetor[50]; char trocou;char trocou;read (n);read (n);for (i=0; i<n; i++)for (i=0; i<n; i++)
read (vetor[i]);read (vetor[i]);trocou = 1;trocou = 1;for (p = n-2; p>=0 && trocou == 1; p--) {for (p = n-2; p>=0 && trocou == 1; p--) {
trocou = 0; trocou = 0; for (i = 0; i<=p; i++)for (i = 0; i<=p; i++)
if (vetor[i] > vetor[i+1]) {if (vetor[i] > vetor[i+1]) {aux = vetor[i]; aux = vetor[i]; vetor[i] = vetor[i+1];vetor[i] = vetor[i+1];vetor[i+1] = aux; vetor[i+1] = aux; trocou = 1;trocou = 1;
}}}}for (i=0; i<n; i++) for (i=0; i<n; i++)
write (vetor[i]);write (vetor[i]);}}
Sua árvore de armazenamento
Estrutura de um programa em C aplainada
![Page 18: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/18.jpg)
Cada nó retangular pode ser mais detalhado
![Page 19: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/19.jpg)
11.2.3 – Grafos 11.2.3 – Grafos
Os Os elementoselementos se interligam de forma bem se interligam de forma bem geralgeral, sem necessariamente formar , sem necessariamente formar hierarquiashierarquias ou ou sequênciassequências
![Page 20: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/20.jpg)
Exemplos:Exemplos:
Tarefas de um projetoTarefas de um projeto Sistema rodoviário de uma regiãoSistema rodoviário de uma região Rede de computadoresRede de computadores Fornecimento de produtos entre fábricasFornecimento de produtos entre fábricas Dependências entre os comandos de um Dependências entre os comandos de um
programaprograma Máquinas de estados finitos (inúmeras Máquinas de estados finitos (inúmeras
aplicações em Engenharia)aplicações em Engenharia) Editores de textoEditores de texto
![Page 21: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/21.jpg)
Capítulo XI – Noções de Capítulo XI – Noções de Estruturas de DadosEstruturas de Dados
11.1 – Importância de boa 11.1 – Importância de boa estruturação de informaçõesestruturação de informações
11.2 – Modelos de armazenamento de 11.2 – Modelos de armazenamento de informaçõesinformações
11.3 – Listas lineares encadeadas11.3 – Listas lineares encadeadas
11.4 – Pilhas e filas11.4 – Pilhas e filas
11.5 – Árvores11.5 – Árvores
![Page 22: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/22.jpg)
11.3 – Listas Lineares 11.3 – Listas Lineares EncadeadasEncadeadas
11.3.1 – Conceito de lista linear geral11.3.1 – Conceito de lista linear geral
Listas lineares geraisListas lineares gerais são listas lineares que são listas lineares que admitem admitem inserção e remoçãoinserção e remoção de elementos de elementos em em qualquer posiçãoqualquer posição
As As estruturas de dadosestruturas de dados para elas se dividem para elas se dividem em dois grandes grupos:em dois grandes grupos:
Estruturas contíguas:Estruturas contíguas: seus elementos são seus elementos são armazenados num armazenados num vetorvetor
Estruturas encadeadas:Estruturas encadeadas: seus elementos são seus elementos são guardados em guardados em encadeamentos de estruturasencadeamentos de estruturas
![Page 23: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/23.jpg)
11.3.2 – Estruturas contíguas11.3.2 – Estruturas contíguas
Os Os elementoselementos são armazenados num são armazenados num vetorvetor::
Declarações, supondo que os elementos sejam nomes de até 15 caracteres:
typedef char nome[16];typedef nome vetor[51];typedef struct lista lista;struct lista {
vetor Elementos; int ultimo;
};lista L;
![Page 24: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/24.jpg)
11.3.2 – Estruturas contíguas11.3.2 – Estruturas contíguas
Os Os elementoselementos são armazenados num são armazenados num vetorvetor::
Por convenção, o 1º elemento fica guardado na posição 1 do vetor Elementos
Caso o valor do campo ultimo seja zero, a lista está vazia
Caso seja 1, a lista tem apenas um elemento
![Page 25: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/25.jpg)
11.3.2 – Estruturas contíguas11.3.2 – Estruturas contíguas
Os Os elementoselementos são armazenados num são armazenados num vetorvetor::
Inserir um elemento na posição i:
Somar 1 ao campo ultimo
Deslocar os elementos a partir da posição i, uma posição para baixo
Copiar, nessa posição, o elemento a ser inserido
![Page 26: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/26.jpg)
11.3.2 – Estruturas contíguas11.3.2 – Estruturas contíguas
Os Os elementoselementos são armazenados num são armazenados num vetorvetor::
Remover o elemento da posição i:
Subtrair 1 do campo ultimo
Deslocar os elementos a partir da posição i+1, uma posição para cima
O elemento da posição i+1 passa a ocupar a posição i, apagando o que ali estava
![Page 27: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/27.jpg)
Para listas com muitos elementos, inserir e remover das posições iniciais envolvem grande movimentação de informações
A ineficiência será grande
O tamanho das listas fica limitado à dimensão declarada do vetor
Para aplicações com muitas inserções e remoções, a estrutura contígua se mostra inadequada
![Page 28: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/28.jpg)
11.3.3 – Estruturas encadeadas11.3.3 – Estruturas encadeadas
Os Os elementoselementos são guardados em são guardados em encadeamentosencadeamentos de de estruturasestruturas::
Cada Cada estruturaestrutura costuma receber o nome de costuma receber o nome de nónó
Cada Cada nónó guarda um guarda um elementoelemento da lista e um da lista e um ponteiroponteiro apontando para o nó que contém o apontando para o nó que contém o sucessorsucessor desse elemento desse elemento
![Page 29: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/29.jpg)
Por convenção, o Por convenção, o 1º nó1º nó do encadeamento do encadeamento não não guarda nenhum elementoguarda nenhum elemento, para facilitar a , para facilitar a programação de diversas operações com listasprogramação de diversas operações com listas
Esse Esse nó especialnó especial costuma receber a costuma receber a designação de designação de nó-lídernó-líder
![Page 30: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/30.jpg)
Declarações:Declarações:typedef char nome[16];typedef struct noh noh;typedef noh *lista;struct noh {
nome elem; noh *prox;};lista L;
Um ponteiro para o nó-líder identifica perfeitamente a listaO tipo do campo elem poderia ser uma estrutura complexa
![Page 31: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/31.jpg)
Variáveis do tipo posição:Variáveis do tipo posição:
Servem para indicar a posição de um determinado elemento numa lista e também para percorrer listas
Na estrutura contígua, a posição de um elemento pode ser o índice do elemento dentro do vetor
typedef int posicao;
posicao p;
![Page 32: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/32.jpg)
Variáveis do tipo posição:Variáveis do tipo posição:
Na Na estrutura encadeadaestrutura encadeada::
Adota-se uma Adota-se uma convenção não muito naturalconvenção não muito natural, , mas útil para facilitar a mas útil para facilitar a programaçãoprogramação das das operações de operações de inseririnserir e e removerremover elementos da elementos da listalista
![Page 33: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/33.jpg)
Variáveis do tipo posição:Variáveis do tipo posição:
Na Na estrutura encadeadaestrutura encadeada::
PosiçãoPosição de um elemento é um de um elemento é um ponteiroponteiro para o para o nó que contém o nó que contém o antecessorantecessor desse elemento desse elemento
typedef noh *posicao;
posicao p;
![Page 34: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/34.jpg)
Exemplos:Exemplos:
Posição do 2º elemento:Posição do 2º elemento: ponteiro para o nó do ponteiro para o nó do 1º elemento1º elemento
Posição do 1º elemento:Posição do 1º elemento: ponteiro para o ponteiro para o nó-nó-líderlíder
Posição do último elemento:Posição do último elemento: ponteiro para o ponteiro para o penúltimopenúltimo nó nó
typedef noh *posicao;posicao p;
pp p
![Page 35: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/35.jpg)
Fim de lista:Fim de lista:
Posição logo após à do último elemento
Na estrutura contígua, é o índice no vetor após o do último elemento
![Page 36: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/36.jpg)
Fim de lista:Fim de lista:
Na Na estrutura encadeadaestrutura encadeada::
Ponteiro para o último nóPonteiro para o último nó
Fim (L)
![Page 37: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/37.jpg)
Exemplo: formação de uma nova lista:Exemplo: formação de uma nova lista:
#include <stdio.h>#include <stdio.h>
#include <stdlib.h>#include <stdlib.h>
#include <conio.h>#include <conio.h>
typedef struct noh noh;typedef struct noh noh;
typedef noh *lista;typedef noh *lista;
typedef noh *posicao;typedef noh *posicao;
struct noh {struct noh {
int elem;int elem;
noh *prox;noh *prox;
};};
lista NovaLista (void);lista NovaLista (void);
void EscreverLista (lista);void EscreverLista (lista);
Função para formar uma nova lista, retornando-aFunção para escrever a lista-argumento
Os elementos da lista serão números inteiros;
Poderiam ser complexas estruturas ou ponteiros para elas
![Page 38: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/38.jpg)
void main () {void main () {
lista L;lista L;
printf ("Leitura de uma lista:\n\n");printf ("Leitura de uma lista:\n\n");
L = NovaLista ();L = NovaLista ();
printf ("\nConfirmacao:");printf ("\nConfirmacao:");
EscreverLista (L);EscreverLista (L);
printf("\n\nDigite algo para encerrar: ");printf("\n\nDigite algo para encerrar: ");
getch ();getch ();
}}
L main
![Page 39: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/39.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
i
p
![Page 40: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/40.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
i
p
3
![Page 41: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/41.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
i
p
3
##
![Page 42: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/42.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (for (p = L, i = 1p = L, i = 1; i <= n; i++) {; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
i
p
3
##
![Page 43: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/43.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (for (p = L, i = 1p = L, i = 1; i <= n; i++) {; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
1i
p
3
##
![Page 44: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/44.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
1i
p
3
##
![Page 45: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/45.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
1i
p
3
##
![Page 46: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/46.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
1i
p
3
##
![Page 47: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/47.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
1i
p
3
##
2
![Page 48: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/48.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; for (p = L, i = 1; i <= n; i++i++) {) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
1i
p
3
##
2
![Page 49: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/49.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; for (p = L, i = 1; i <= n; i++i++) {) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
2i
p
3
##
2
![Page 50: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/50.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
2i
p
3
##
2
![Page 51: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/51.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
2i
p
3
##
2
p
![Page 52: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/52.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
2i
3
##
2
p
5
![Page 53: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/53.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; for (p = L, i = 1; i <= n; i++i++) {) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
2i
3
##
2
p
5
![Page 54: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/54.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; for (p = L, i = 1; i <= n; i++i++) {) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
3i
3
##
2
p
5
![Page 55: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/55.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
3i
3
##
2
p
5
![Page 56: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/56.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
3i
3
##
2
p
5
p
![Page 57: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/57.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
3i
3
##
2 5
p
7
![Page 58: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/58.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; for (p = L, i = 1; i <= n; i++i++) {) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
3i
3
##
2 5
p
7
![Page 59: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/59.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; for (p = L, i = 1; i <= n; i++i++) {) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
4i
3
##
2 5
p
7
![Page 60: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/60.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
4i
3
##
2 5
p
7
![Page 61: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/61.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
NovaLista
L
n
4i
3
##
2 5
p
7
Retorno
Nova lista sai do ar !!!
![Page 62: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/62.jpg)
lista NovaLista () {lista NovaLista () {
lista L; posicao p;lista L; posicao p;
int i, n;int i, n;
printf ("Numero de elementos da lista: ");printf ("Numero de elementos da lista: ");
scanf ("%d", &n);scanf ("%d", &n);
printf ("\nElementos:\n\t");printf ("\nElementos:\n\t");
L = (noh *) malloc (sizeof (noh));L = (noh *) malloc (sizeof (noh));
for (p = L, i = 1; i <= n; i++) {for (p = L, i = 1; i <= n; i++) {
p->prox = (noh *) malloc (sizeof (noh));p->prox = (noh *) malloc (sizeof (noh));
p = p->prox;p = p->prox;
scanf ("%d", &p->elem);scanf ("%d", &p->elem);
}}
p->prox = NULL;p->prox = NULL;
return L;return L;
}}
L mainmain: L = NovaLista ();
##
2 5 7
Retorno
![Page 63: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/63.jpg)
void EscreverLista (lista L) {void EscreverLista (lista L) {
posicao p;posicao p;
printf ("\n\t");printf ("\n\t");
for (p = L; p->prox != NULL; p = p->prox)for (p = L; p->prox != NULL; p = p->prox)
printf ("%4d", p->prox->elem);printf ("%4d", p->prox->elem);
printf ("\n");printf ("\n");
}}
L mainmain: EscreverLista (L);
##
2 5 7
EscreverLista
L
p
Vídeo
![Page 64: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/64.jpg)
void EscreverLista (lista L) {void EscreverLista (lista L) {
posicao p;posicao p;
printf ("\n\t");printf ("\n\t");
for (for (p = L;p = L; p->prox != NULL; p = p->prox) p->prox != NULL; p = p->prox)
printf ("%4d", p->prox->elem);printf ("%4d", p->prox->elem);
printf ("\n");printf ("\n");
}}
L mainmain: EscreverLista (L);
##
2 5 7
EscreverLista
L
p
Vídeo
p
![Page 65: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/65.jpg)
void EscreverLista (lista L) {void EscreverLista (lista L) {
posicao p;posicao p;
printf ("\n\t");printf ("\n\t");
for (p = L; p->prox != NULL; p = p->prox)for (p = L; p->prox != NULL; p = p->prox)
printf ("%4d", p->prox->elem);printf ("%4d", p->prox->elem);
printf ("\n");printf ("\n");
}}
L mainmain: EscreverLista (L);
##
2 5 7
EscreverLista
L
Vídeo
p
![Page 66: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/66.jpg)
void EscreverLista (lista L) {void EscreverLista (lista L) {
posicao p;posicao p;
printf ("\n\t");printf ("\n\t");
for (p = L; p->prox != NULL; p = p->prox)for (p = L; p->prox != NULL; p = p->prox)
printf ("%4d", p->prox->elem);printf ("%4d", p->prox->elem);
printf ("\n");printf ("\n");
}}
L mainmain: EscreverLista (L);
##
2 5 7
EscreverLista
L
2
Vídeo
p
![Page 67: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/67.jpg)
void EscreverLista (lista L) {void EscreverLista (lista L) {
posicao p;posicao p;
printf ("\n\t");printf ("\n\t");
for (p = L; p->prox != NULL; for (p = L; p->prox != NULL; p = p->proxp = p->prox))
printf ("%4d", p->prox->elem);printf ("%4d", p->prox->elem);
printf ("\n");printf ("\n");
}}
L mainmain: EscreverLista (L);
##
2 5 7
EscreverLista
L
2
Vídeo
p p
![Page 68: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/68.jpg)
void EscreverLista (lista L) {void EscreverLista (lista L) {
posicao p;posicao p;
printf ("\n\t");printf ("\n\t");
for (p = L; p->prox != NULL; p = p->prox)for (p = L; p->prox != NULL; p = p->prox)
printf ("%4d", p->prox->elem);printf ("%4d", p->prox->elem);
printf ("\n");printf ("\n");
}}
L mainmain: EscreverLista (L);
##
2 5 7
EscreverLista
L
2
Vídeo
p
![Page 69: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/69.jpg)
void EscreverLista (lista L) {void EscreverLista (lista L) {
posicao p;posicao p;
printf ("\n\t");printf ("\n\t");
for (p = L; p->prox != NULL; p = p->prox)for (p = L; p->prox != NULL; p = p->prox)
printf ("%4d", p->prox->elem);printf ("%4d", p->prox->elem);
printf ("\n");printf ("\n");
}}
L mainmain: EscreverLista (L);
##
2 5 7
EscreverLista
L
2 5
Vídeo
p
![Page 70: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/70.jpg)
void EscreverLista (lista L) {void EscreverLista (lista L) {
posicao p;posicao p;
printf ("\n\t");printf ("\n\t");
for (p = L; p->prox != NULL; for (p = L; p->prox != NULL; p = p->proxp = p->prox))
printf ("%4d", p->prox->elem);printf ("%4d", p->prox->elem);
printf ("\n");printf ("\n");
}}
L mainmain: EscreverLista (L);
##
2 5 7
EscreverLista
L
2 5
Vídeo
p p
![Page 71: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/71.jpg)
void EscreverLista (lista L) {void EscreverLista (lista L) {
posicao p;posicao p;
printf ("\n\t");printf ("\n\t");
for (p = L; p->prox != NULL; p = p->prox)for (p = L; p->prox != NULL; p = p->prox)
printf ("%4d", p->prox->elem);printf ("%4d", p->prox->elem);
printf ("\n");printf ("\n");
}}
L mainmain: EscreverLista (L);
##
2 5 7
EscreverLista
L
2 5
Vídeo
p
![Page 72: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/72.jpg)
void EscreverLista (lista L) {void EscreverLista (lista L) {
posicao p;posicao p;
printf ("\n\t");printf ("\n\t");
for (p = L; p->prox != NULL; p = p->prox)for (p = L; p->prox != NULL; p = p->prox)
printf ("%4d", p->prox->elem);printf ("%4d", p->prox->elem);
printf ("\n");printf ("\n");
}}
L mainmain: EscreverLista (L);
##
2 5 7
EscreverLista
L
2 5 7
Vídeo
p
![Page 73: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/73.jpg)
void EscreverLista (lista L) {void EscreverLista (lista L) {
posicao p;posicao p;
printf ("\n\t");printf ("\n\t");
for (p = L; p->prox != NULL; for (p = L; p->prox != NULL; p = p->proxp = p->prox))
printf ("%4d", p->prox->elem);printf ("%4d", p->prox->elem);
printf ("\n");printf ("\n");
}}
L mainmain: EscreverLista (L);
##
2 5 7
EscreverLista
L
2 5 7
Vídeo
p p
![Page 74: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/74.jpg)
void EscreverLista (lista L) {void EscreverLista (lista L) {
posicao p;posicao p;
printf ("\n\t");printf ("\n\t");
for (p = L; p->prox != NULL; p = p->prox)for (p = L; p->prox != NULL; p = p->prox)
printf ("%4d", p->prox->elem);printf ("%4d", p->prox->elem);
printf ("\n");printf ("\n");
}}
L mainmain: EscreverLista (L);
##
2 5 7
EscreverLista
L
2 5 7
Vídeo
p
Fim !!!
![Page 75: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/75.jpg)
Para Para inseririnserir ou ou removerremover elementos de uma elementos de uma lista linear com estrutura lista linear com estrutura encadeadaencadeada não é não é necessária grande necessária grande movimentaçãomovimentação de dados de dados
Exemplo:Exemplo: inseririnserir um elemento um elemento xx na posição na posição pp de uma lista de uma lista LL
##
2 5 7L
p
O nó do elemento deve ser encadeado aqui
9 x
Passos:
q = p->prox;p->prox = (noh*) malloc (sizeof (noh));p->prox->elem = x;p->prox->prox = q;
q9
Cuidado: p pode apontar para nó fora da lista L
![Page 76: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc10f497959413d8c5531/html5/thumbnails/76.jpg)
Exemplo:Exemplo: removerremover o elemento da posição o elemento da posição pp de de uma lista uma lista LL
Outra vantagemOutra vantagem da lista encadeada: o da lista encadeada: o número número de elementosde elementos de uma lista não fica limitado a de uma lista não fica limitado a nenhum nenhum dimensionamentodimensionamento estabelecido em estabelecido em declaraçõesdeclarações
p
Nó que contém o elemento da posição p
Passos:
q = p->prox;p->prox = q->prox;free(q);
q
##
2 5 7L 9
Cuidado: p pode apontar para nó fora da lista L