Baixe o app para aproveitar ainda mais
Prévia do material em texto
Função para lista vazia Customização Dúvidas ao tutorUnidade 2 / Aula 1 O que são as Estruturas de Dados do tipo Lista? 100% Função para lista vazia Vídeoaula: Estruturas de Dados Inserção de elemento em lista Impressão de elementos em lista Lista duplamente ligada Vídeoaula: Operações com Listas Ligadas – Inserção Vídeoaula: Operações com Listas Ligadas Fe ed ba ck A primeira é uma das mais importantes funções que vamos implementar, é a função que cria a própria lista. Vejamos o código desta função (código – Função para criar uma lista vazia) e, depois, a explicaremos passo a passo. Função para criar uma lista vazia. Fonte: elaborada pelos autores. Basicamente, o que essa função faz é instanciar dinamicamente uma variável do tipo struct “Lista” na memória (linha 2) e configurar os valores de seus campos. Unidade 2 / Aula 1 O que são as Estruturas de Dados do tipo Lista? 100% Função para lista vazia Vídeoaula: Estruturas de Dados Inserção de elemento em lista Impressão de elementos em lista Lista duplamente ligada Vídeoaula: Operações com Listas Ligadas – Inserção Vídeoaula: Operações com Listas Ligadas Fe ed ba ck O campo “inicio”, que é um ponteiro, deve apontar para NULL, uma vez que estamos criando uma lista vazia (linha 4). NULL é uma palavra reservada da linguagem C, muito usada com ponteiros, indicando que ele não está apontando para qualquer posição de memória válida do computador. Analogamente, o campo “tamanho” deve ser inicializado com o valor igual a 0 (zero) – linha 5. Feito isso, deve-se retornar o endereço da memória alocado para a variável do tipo “Lista” (linha 7). Um ponto importante a destacar é que, antes de configurar os valores dos campos da struct “Lista”, é preciso testar se a memória foi corretamente alocada para a lista (linha 3). Isso é importante, pois caso a função “malloc” não consiga alocar o espaço necessário para a lista, ela retornará o valor NULL. Ao utilizar a função “malloc” quando criamos um ponteiro para uma variável do tipo de struct, a forma de acesso aos campos da struct muda. Em vez de usarmos o operador. (ponto), passamos a utilizar o operador → (seta), conforme pode ser visto nas linhas 4 e 5 no código – Função para criar uma lista vazia. Já podemos criar e utilizar nossa primeira lista simplesmente ligada. Mas, antes disso, vamos implementar mais uma função, a saber, a função que verifica se a lista está vazia ou não. Unidade 2 / Aula 1 O que são as Estruturas de Dados do tipo Lista? 100% Função para lista vazia Vídeoaula: Estruturas de Dados Inserção de elemento em lista Impressão de elementos em lista Lista duplamente ligada Vídeoaula: Operações com Listas Ligadas – Inserção Vídeoaula: Operações com Listas Ligadas Fe ed ba ck Para sabermos se uma lista está vazia ou não, basta verificar se o ponteiro “inicio” da lista está apontando para NULL. Para isso, é preciso ter acesso à lista, que será passada por referência para a função. Veja a seguir o código da função que verifica se a lista está vazia: Função para verificar se uma lista está vazia. Fonte: elaborada pelos autores. Dois destaques para essa função são necessários: 1. Primeiramente, estamos utilizando o tipo de dados bool, que não existe, por padrão, na linguagem C. Então, para utilizá-lo, é preciso importar a biblioteca Unidade 2 / Aula 1 O que são as Estruturas de Dados do tipo Lista? 100% Função para lista vazia Vídeoaula: Estruturas de Dados Inserção de elemento em lista Impressão de elementos em lista Lista duplamente ligada Vídeoaula: Operações com Listas Ligadas – Inserção Vídeoaula: Operações com Listas Ligadas Fe ed ba ck <stdbool.h>, como pode ser visto no código - Função para verificar se uma lista está vazia, (linha 1). 2. Outro ponto importante é o uso da instrução “assert()” (linha 4). Essa instrução é implementada pela biblioteca <assert.h> (linha 2) e seu objetivo é verificar o resultado de uma expressão lógica passada por parâmetro para ela. Caso o resultado da expressão seja verdadeiro, o fluxo do programa segue normalmente, caso contrário, o programa é abortado (terminado) e um erro é apresentado ao usuário. Isso é necessário porque, antes de realizar qualquer operação sobre a lista, é importante verificar se o endereço de memória apontado por ela não é NULL. _______ 📝 Exemplificando Há outra forma de se implementar a função “vazia()”. Pense um pouco e tente implementar uma versão alternativa para essa função sem usar o ponteiro “inicio” da lista. A solução consiste em verificar o tamanho da lista. Se ele for igual a 0 (zero), é porque a lista está vazia; caso contrário, a lista não está vazia. Unidade 2 / Aula 1 O que são as Estruturas de Dados do tipo Lista? 100% Função para lista vazia Vídeoaula: Estruturas de Dados Inserção de elemento em lista Impressão de elementos em lista Lista duplamente ligada Vídeoaula: Operações com Listas Ligadas – Inserção Vídeoaula: Operações com Listas Ligadas Fe ed ba ck Implementação da função “vazia()”. Fonte: elaborado pelo autor. _______ Agora podemos usar nossa lista. Vamos criar uma lista vazia e testar se ela realmente está vazia. Para isso, utilizamos a função main(), como pode ser visto no código - Função para criar uma lista e testar se ela está vazia. Unidade 2 / Aula 1 O que são as Estruturas de Dados do tipo Lista? 100% Função para lista vazia Vídeoaula: Estruturas de Dados Inserção de elemento em lista Impressão de elementos em lista Lista duplamente ligada Vídeoaula: Operações com Listas Ligadas – Inserção Vídeoaula: Operações com Listas Ligadas Fe ed ba ck Função para criar uma lista e testar se ela está vazia. Fonte: elaborada pelos autores. Na linha 2 criamos uma lista vazia, usando a função “criar()”, e armazenamos o endereço dessa lista no ponteiro “minha_lista”. Nós usaremos esse ponteiro sempre que quisermos realizar alguma operação em nossa lista. Logo após, nas linhas 3 a 7, estamos testando se a lista está vazia, por meio da função “vazia()”, e imprimindo uma mensagem apropriada na tela. Visualmente falando, o resultado da execução do código apresentado no código – Função para criar uma lista – e testar se ela está vazia, é o que pode ser visto na figura a seguir: Unidade 2 / Aula 1 O que são as Estruturas de Dados do tipo Lista? 100% Função para lista vazia Vídeoaula: Estruturas de Dados Inserção de elemento em lista Impressão de elementos em lista Lista duplamente ligada Vídeoaula: Operações com Listas Ligadas – Inserção Vídeoaula: Operações com Listas Ligadas Fe ed ba ck Ilustração de uma lista ligada vazia. Fonte: elaborada pelos autores. O código completo da nossa ED lista simplesmente ligada até o momento pode ser visto a seguir, utilizando a ferramenta Paiza.io. Unidade 2 / Aula 1 O que são as Estruturas de Dados do tipo Lista? 100% Função para lista vazia Vídeoaula: Estruturas de Dados Inserção de elemento em lista Impressão de elementos em lista Lista duplamente ligada Vídeoaula: Operações com Listas Ligadas – Inserção Vídeoaula: Operações com Listas Ligadas Fe ed ba ck https://paiza.io/projects/_SNu-ITUfeEaaaF8ivM94Q Avalie este conteúdo Escolha de 1 a 5 estrelas Unidade 2 / Aula 1 O que são as Estruturas de Dados do tipo Lista? 100% Função para lista vazia Vídeoaula: Estruturas de Dados Inserção de elemento em lista Impressão de elementos em lista Lista duplamente ligada Vídeoaula: Operações com Listas Ligadas – Inserção Vídeoaula: Operações com Listas Ligadas Fe ed ba ck Conteúdo anterior Próximo conteúdoUnidade 2 / Aula 1 O que são as Estruturas de Dados do tipo Lista? 100% Função para lista vazia Vídeoaula: Estruturas de Dados Inserção de elemento em lista Impressão de elementos em lista Lista duplamente ligada Vídeoaula: Operações com Listas Ligadas – Inserção Vídeoaula: Operações com Listas Ligadas Fe ed ba ck
Compartilhar