Você está aqui: C ::: Estruturas de Dados ::: Lista Ligada Simples |
Introdução às listas ligadas em CQuantidade de visualizações: 14687 vezes |
Então você se interessou pelo assunto de listas ligadas em C? Recomendo que leia esta anotação com muita atenção. É o ponto de partida para o entendimento e implementação desta estrutura de dados tão importante. Uma lista singularmente ou duplamente ligada (singly or doubly linked list) é uma lista dinâmica no sentido de que ela pode crescer ou diminuir de acordo com as necessidades do programa. As matrizes (arrays) comuns também têm seu papel assegurado no estudo das estruturas de dados. No entanto, uma de suas limitações é que seus elementos são dispostos lado a lado na memória. Isso torna a inserção de um novo elemento no meio do array uma tarefa dispendiosa, visto que os demais elementos precisam ser movidos para outras posições. Em uma lista dinâmica isso não acontece. O conceito princial das listas ligadas é a capacidade de um nó (cada elemento da lista é chamado de nó) poder apontar para um outro nó com estrutura semelhante. Veja a estrutura típica de um nó em uma lista ligada: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // estrutura Nó struct No{ int valor; struct No *proximo; }; // fim da estrutura Nó Note que esta estrutura contém dois campos: um campo do tipo int que guarda o valor do nó e um campo do tipo ponteiro apontando para uma estrutura do mesmo tipo que o nó atual. Isso permite a circularidade das listas, ou seja, um nó apontando para um elemento de seu mesmo tipo. Com este conhecimento já podemos criar o início de uma lista singularmente ligada, para isso só precisamos declarar uma variável do tipo No. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // declara o início da lista struct No *inicio; Até agora temos uma lista ligada vazia. A criação do primeiro elemento da lista pode ser feito da seguinte forma: ---------------------------------------------------------------------- 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ó int main(int argc, char *argv[]) { // declara o início da lista struct No *inicio = NULL; // verifica se a lista está vazia if(inicio == NULL){ // reserva memória para o novo nó inicio = (struct No*)malloc(sizeof(struct No)); // a memória foi alocada com sucesso? if(inicio != NULL){ inicio->valor = 150; // é o primeiro nó...seu campo proximo não deve // apontar para lugar nenhum inicio->proximo = NULL; } } printf("%d\n\n", inicio->valor); system("pause"); return 0; } Aqui nós temos a criação do primeiro nó de uma lista singularmente ligada. Note como usamos a função malloc() para alocar memória para o nó atual. Veja também que o valor NULL é fornecido para o campo próximo do nó. Isso aconteceu porque temos apenas um nó. Em outras dicas desta seção abordaremos como inserir os demais nós e também listar todos os nós existentes na lista. Até lá. |
Link para compartilhar na Internet ou com seus amigos: |
C ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como testar múltiplas condições usando a construção if...else if...else da linguagem CQuantidade de visualizações: 11864 vezes |
Em algumas situações precisamos usar a estrutura condicional if...else (se...senão) da linguagem C para testarmos múltiplas condições. Para estes casos, o C nos permite combinar if...else if...else várias vezes. Veja o trecho de código a seguir: ---------------------------------------------------------------------- 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> int main(int argc, char *argv[]){ int valor = 20; if(valor == 15){ printf("O valor a igual a 15"); } else if(valor > 15){ printf("O valor e maior que 15"); } else{ printf("O valor e menor que 15"); } printf("\n\n"); system("PAUSE"); return 0; } Ao executarmos este código nós teremos o seguinte resultado: O valor é maior que 15 |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como verificar se uma string é igual, maior ou menor que outra em C usando a função strcmp()Quantidade de visualizações: 22338 vezes |
A função strcmp() da linguagem C pode ser usada para verificar se uma string é igual, maior ou menor que outra. Esta função, presente no header string.h aceita duas strings e retorna um valor inteiro: 0 se as strings forem iguais; maior que 0 se a primeira string for maior que a segunda e menor que 0 se a primeira string for menor que a segunda. Veja um exemplo de seu uso: ---------------------------------------------------------------------- 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> #include <string.h> int main(int argc, char *argv[]){ char palavra1[] = "Java"; char palavra2[] = "JavaScript"; if(strcmp(palavra1, palavra2) == 0){ printf("As palavras sao iguais"); } else if(strcmp(palavra1, palavra2) > 0){ printf("A primeira string e maior que a segunda"); } else if(strcmp(palavra1, palavra2) < 0){ printf("A segunda string e maior que a primeira"); } puts("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: A segunda string é maior que a primeira. |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercício Resolvido de C - Um método recursivo que conta de 0 até 10Quantidade de visualizações: 771 vezes |
Pergunta/Tarefa: Escreva um método recursivo que conta e exibe os valores de 0 até 10. Seu método deverá possuir a seguinte assinatura: void contar_recursivamente(int n){ // sua implementação aqui } Sua saída deverá ser parecida com: 0 1 2 3 4 5 6 7 8 9 10 Veja a resolução comentada deste exercício usando C console: ---------------------------------------------------------------------- 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> // método recursivo que conta de 0 até 10; void contar_recursivamente(int n){ // vamos exibir o número atual printf("%d ", n); // devemos prosseguir com a recursividade? if(n < 10){ // incrementa o valor de n n++; contar_recursivamente(n); // e faz uma nova chamada recursiva } } // método principal do programa int main(int argc, char *argv[]){ // efetua uma chamada ao método recursivo fornecendo o primeiro valor contar_recursivamente(0); printf("\n\n"); system("pause"); return 0; } |
Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica |
Perfil de velocidade turbulento A Lei da Parede para a determinação do perfil de velocidade empírico-turbulento envolve a determinação da velocidade de atrito na subcamada viscosa. Além do método da Lei da Parede, quais outros métodos existem para estimar o perfil de velocidade turbulento? A) Fator de atrito de Darcy, Lei da Potência e Lei Logarítmica. B) Princípio de Arquimedes, Lei da Potência e Lei do Defeito da Velocidade. C) Lei Logarítmica, Lei do Defeito da Velocidade e Lei da Potência. D) Lei da Potência, Lei de Hooke e Lei do Defeito da Velocidade. E) Fator de atrito de Darcy, Lei Logarítmica e Princípio de Arquimedes. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira |
Evolução das estruturas O concreto armado, no qual barras de aço são inseridas nas peças de concreto, foi desenvolvido na década de 1850. A junção do aço ao concreto contribui na melhoria do desempenho estrutural do concreto em relação à: Selecione a resposta: A) Resistência à compressão. B) Resistência à tração. C) Resistência à umidade. D) Resistência ao fogo. E) Resistência à infiltração. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Python |
Qual o resultado da execução do seguinte código Python?valores = [4, 1, 8, 3, 7, 9] for i in range(0, len(valores)): if i % 2 == 0: print("{0} ".format(valores[i]), end="") A) Erro NameError: name 'end' is not defined na linha 4 B) 4 1 8 C) Erro SyntaxError: invalid syntax na linha 3 D) 1 3 9 E) 4 8 7 Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em |
Dimensionamento de pilares de canto Os pilares de canto são solicitados pela flexão oblíqua, tendo momentos de 1ª ordem e excentricidades nas direções x e y. Analise os dados para o pilar a seguir: Qual o valor das excentricidades no topo e na base do referido pilar, em x e y? A) e1,x,A = 1,02cm. e1,x,B = 1,31cm. e1,y,A = 2,05cm. e1,y,B = 1,75cm. B) e1,x,A = 1,52cm. e1,x,B = 1,31cm. e1,y,A = 2,22cm. e1,y,B = 1,99cm. C) e1,x,A = 2,10cm. e1,x,B = 1,56cm. e1,y,A = 1,50cm. e1,y,B = 1,99cm. D) e1,x,A = 2,78cm. e1,x,B = 1,32cm. e1,y,A = 1,50cm. e1,y,B = 1,99cm. E) e1,x,A = 1,78cm. e1,x,B = 1,32cm. e1,y,A = 1,22cm. e1,y,B = 0,99cm. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil |
Locação da obra No caso de obras de grande área (m2), erros acumulados de alinhamento podem acarretar perda de tempo e dinheiro, sendo conveniente, portanto, o auxílio da topografia. Para esse tipo de obra, que tem muitos elementos (fundações, paredes, etc.), qual é o processo ideal de locação? A) Processo dos cavaletes. B) Processo dos piquetes. C) Processo dos perfis metálicos. D) Processo dos tapumes (ou gabaritos ou tábuas corridas). E) Locação com auxílio das construções vizinhas. Verificar Resposta Estudar Cards Todas as Questões |
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |