Você está aqui: C ::: Estruturas de Dados ::: Lista Ligada Simples

Obtendo a quantidade de nós em uma lista ligada

Quantidade de visualizações: 8461 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;
}


Link para compartilhar na Internet ou com seus amigos:

C ::: Dicas & Truques ::: Data e Hora

Como obter e exibir a data atual no formato DD/MM/YYYY (Ex: 02/07/2013) usando a linguagem C

Quantidade de visualizações: 4670 vezes
Em algumas situações gostaríamos de obter e exibir a data no formato DD/MM/YYYY, por exemplo, 23/05/2010. Para isso podemos usar a função strftime(), que nos permite formatar o conteúdo da estrutura tm usando especificadores de formato. Veja o 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>
#include <time.h>

int main(int argc, char *argv[]){
  time_t data_hora_segundos; // guarda os segundos deste 01/01/1970
  struct tm *timeinfo; // declara uma estrutura tm
  time(&data_hora_segundos); // preenche a variável data_hora_segundos
  // preenche a estrutura timeinfo
  timeinfo = localtime(&data_hora_segundos);

  // obtém e exibe a data atual no formato DD/MM/YYYY
  char data_atual[80];
  strftime(data_atual, 80, "A data de hoje é: %d/%m/%Y", timeinfo);

  // mostra o resultado
  printf("%s\n\n", data_atual);

  system("PAUSE");
  return 0;
}

Ao executar este código nós teremos o seguinte resultado:

A data de hoje é: 02/08/2013

Para exibir a data no formato DD/MM/YYYY eu usei os especificadores de formato %d, %m e %Y.


C ::: Desafios e Lista de Exercícios Resolvidos ::: Geometria Analítica e Álgebra Linear

Exercício Resolvido de C - Como calcular o quadrante de uma coordenada cartesiana em C

Quantidade de visualizações: 1461 vezes
Pergunta/Tarefa:

O Plano Cartesiano, ou Sistema de Coordenadas Cartesianas, é formado por duas retas reais perpendiculares, ou seja, o ângulo entre elas é de 90 graus. Essas retas determinam um único plano, que é denominado como sistema ortogonal de coordenadas cartesianas ou somente plano cartesiano.

No ano de 1637, René Descartes teve a brilhante ideia de relacionar álgebra e geometria, dando início à conhecida geometria analítica, método que possibilita descrever a geometria utilizando uma menor quantidade de diagramas e desenhos. Apesar de os créditos dessa descoberta serem dados a Descartes, Pierre de Fermat já conhecia e utilizava alguns conceitos de geometria analítica, logo o plano cartesiano.

Há quatro quadrantes no Sistema de Coordenadas Cartesianas, conforme a figura a seguir:



Como podemos ver, no primeiro quadrante, tanto o x quanto o y são positivos. No segundo quadrante o x é negativo e o y é positivo. No terceiro quadrante, tanto o x quanto o y são negativos. Por fim, no quarto quadrante, o x é positivo e o y é negativo.

Escreva um programa C que pede para o usuário informar os valores x e y de uma coordenada cartesiana e informe em qual quadrante essa coordenada se situa. Se os valores de x e y forem zero, informe que o ponto se situa na origem do plano cartesiano.

Sua saída deverá ser parecida com:

Informe o valor x da coordenada: 12
Informe o valor y da coordenada: -7
A coordenada (12,-7) está no Quarto Quadrante (+,-)
Resposta/Solução:

Veja a resolução comentada deste exercício em C:

----------------------------------------------------------------------
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 <locale.h>

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas na resolução do problema
  int x, y;
  
  setlocale(LC_ALL,""); // para acentos do português
 
  // vamos pedir para o usuário informar as coordenadas
  printf("Informe o valor x da coordenada: ");
  scanf("%d", &x);
  printf("Informe o valor y da coordenada: ");
  scanf("%d", &y);
  
  // a coordenada está no primeiro quadrante? 
  if (x > 0 && y > 0){
    printf("A coordenada (%d,%d) está no Primeiro Quadrante (+,+)", x, y);
  }
  // a coordenada está no segundo quadrante?
  else if (x < 0 && y > 0){
    printf("A coordenada (%d,%d) está no Segundo Quadrante (-,+)", x, y);
  }
  // a coordenada está no terceiro quadrante?
  else if (x < 0 && y < 0){
    printf("A coordenada (%d,%d) está no Terceiro Quadrante (-,-)", x, y);
  }
  // a coordenada está no quarto quadrante?
  else if (x > 0 && y < 0){
    printf("A coordenada (%d,%d) está no Quarto Quadrante (+,-)", x, y);
  }
  // a coordenada está na origem
  else{
    printf("A coordenada (%d,%d) está na origem", x, y);
  }
  
  printf("\n\n");
  system("PAUSE");	
  return 0;
}



C ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como testar múltiplas condições usando a construção if...else if...else da linguagem C

Quantidade de visualizações: 11942 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


Desafios, Exercícios e Algoritmos Resolvidos de C

Veja mais Dicas e truques de C

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware 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 funcionalidadesControle 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
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 70 usuários muito felizes estudando em nosso site.