Você está aqui: C ::: Estruturas de Dados ::: Lista Ligada Simples |
Obtendo a quantidade de nós em uma lista ligadaQuantidade de visualizações: 8596 vezes |
Em algumas situações precisamos contar os nós de uma lista ligada. Esta dica mostra como isso pode ser feito. Neste exemplo, a estrutura usada para representar cada nó é a seguinte:----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
struct No{
int valor;
struct No *proximo;
};
Note que cada nó contém apenas um valor inteiro e um ponteiro para o próximo nó. Ao analisar o código você perceberá que tanto a inserção dos nós quanto a contagem são feitas usando funções. Isso permitirá o reaproveitamento deste código em suas próprias implementações. Vamos ao código: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
// estrutura Nó
struct No{
int valor;
struct No *proximo;
};
// fim da estrutura Nó
// função que permite obter a quantidade de nós
// na lista
int contar_nos(struct No *n){
int quant = 0;
// percorre todos os nós incrementando a
// variável quant
while(n != NULL){
quant++;
n = n->proximo;
}
return quant;
}
// função que permite inserir nós na lista.
// veja que a função recebe o valor a ser
// armazenado em cada nó e um ponteiro para o
// início da lista. A função retorna um
// ponteiro para o início da lista
struct No *inserir(struct No *n, int v){
struct No *temp;
// verifica se a lista está vazia
if(n == NULL){
// reserva memória para o novo nó
n = (struct No*)malloc(sizeof(struct No));
n->valor = v;
// é o primeiro nó...não deve apontar para
// lugar nenhum
n->proximo = NULL;
}
else{ // não está vazia....vamos inserir o nó no final
temp = n;
// vamos varrer a lista até encontrar o último nó
while(temp->proximo != NULL)
temp = temp->proximo;
// estamos no último nó...vamos criar um novo nó agora
temp->proximo = (struct No*)malloc(sizeof(struct No));
// atribui o valor do nó
temp->proximo->valor = v;
// define o campo proximo do nó como NULL
temp->proximo->proximo = NULL;
}
return n;
}
int main(int argc, char *argv[])
{
// declara a lista
struct No *inicio = NULL;
// vamos inserir quatro valores na lista
inicio = inserir(inicio, 45);
printf("Quantidade de nos: %d\n", contar_nos(inicio));
inicio = inserir(inicio, 3);
printf("Quantidade de nos: %d\n", contar_nos(inicio));
inicio = inserir(inicio, 98);
printf("Quantidade de nos: %d\n", contar_nos(inicio));
inicio = inserir(inicio, 17);
printf("Quantidade de nos: %d\n\n", contar_nos(inicio));
system("pause");
return 0;
}
|
|
|
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
|
Python - Como verificar se uma string contém apenas caracteres de espaços em Python usando a função isspace() |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






