Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Últimos assuntos
Relogio

Programa para calcular o tempo para encontrar o último elemento de uma lista simplesmente

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Programa para calcular o tempo para encontrar o último elemento de uma lista simplesmente

Mensagem  juk em Dom Jan 20, 2013 10:36 pm

1-Programa para calcular o tempo para encontrar o último elemento de uma lista simplesmente encadeada com 100, 1000, 5000.
-laço de repetição
-inserir os elementos
-marcar o tempo
Código:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
typedef struct Temp
  {
    int info;
    struct Temp *prox;
  }lista;
  // cria o inicio da lista
  lista *inicio;
//--------------------------------------------------------
// Funcao que define a lista como vazia.
void criaLista()
{
  inicio = NULL;
}
//--------------------------------------------------------
// Funcao que insere um elemento do inicio da lista.
// Retorna:
//   0 - se nao ha'  memoria para inserir
//   1 - se conseguiu inserir
int insere(int dado)
{
  lista *ponteiro;
  ponteiro =  (lista *) malloc(sizeof(lista));
    if (ponteiro==NULL)
    {
      printf("Erro de alocacao\n");
      return 0;
    }
  ponteiro->info = dado;
  ponteiro->prox = NULL;
    if (inicio==NULL)
      {
      inicio = ponteiro;
        printf("insercao= %d\n",ponteiro->info);
      }
    else
      {
     ponteiro->prox = inicio;
     inicio  = ponteiro;
       printf("insercao= %d\n",ponteiro->info);
     }
   return 1;
}

void imprime()
{
  lista *ponteirolista;
  if (inicio == NULL)
  {
    printf("funcao-impressao>>lista-null--\n\n");
    return;
  }
  // Caso a lista nao esteja vazia
  ponteirolista = inicio;
  while (ponteirolista !=NULL) {
    printf("imprimindo = %d\n",ponteirolista->info);
    ponteirolista = ponteirolista->prox;
  }
  printf("funcao-impressao>>fim-da-lista ---\n\n");
}

lista *buscaDado(int dado)
{
  lista *ponteiro;
  if (inicio == NULL)
  {
    return NULL;  // Lista Vazia
  }
  // Caso a lista nao esteja vazia
  ponteiro = inicio;
  while (ponteiro !=NULL) {
     printf("procurando %d==%d\n",dado,ponteiro->info);
     getchar();
    if (ponteiro->info == dado)  // achou !!
    {
       printf("%d",ponteiro->info);
   return (ponteiro);        // retorna um ponteiro para
                            //o inicio da lista
                   }
    else
    {
      
        ponteiro = ponteiro->prox;
       
     }
  }
  return NULL;
}
void libera (lista* l)
{
   printf("Funcao liberar\n");
  lista* p = l;
  while (p != NULL)
      {
        lista* t = p->prox;
        free(p);
        p = t;
      }
}


int main()
{
  int i;
  int tamanho=1;
  criaLista();
  printf("Digite o tamanha da lista:");
  scanf("%d",&tamanho);
  for (i=1; i<=tamanho;i++)
  {
      insere(i);
  }
  getchar();
  getchar();
  imprime();
  getchar();
///contadortempo
  time_t inicio_temp,fim_temp;
  double diferenca;
  //---time
  time (&inicio_temp);
  //codigo
  buscaDado(1);//busta o ultimo dado
 
  //-------fim-codigo--------
  time (&fim_temp);
  diferenca = difftime (fim_temp,inicio_temp); //calcula a diferença entro o tempo
 
  printf("\nTempo em segundos: %ld", fim_temp);
  printf("\nTempo em segundos: %ld", inicio_temp);
  printf("\nTempo em segundos: %.2lf",  diferenca );
 
///-----------------
getchar();
getchar();
  libera (inicio);
  imprime();
  getchar();
  return 0;
}
avatar
juk

Mensagens : 225
Data de inscrição : 02/04/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum