1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Duvida em C Listas ligadas

Discussão em 'Programação' iniciada por jostafary, 12 de Novembro de 2012. (Respostas: 12; Visualizações: 1087)

  1. Boas tenho uma duvida que já tentei algumas pesquisas na net e não consegui tirar a minha duvida por isso recorri ao forum.

    O problema é o seguinte:
    Tenho de fazer uma gerência de nomes e do numero de telefone e de telemóvel de pessoas.
    E tenho de usar listas ligadas.

    E a minha duvida é a seguinte.
    Eu numa lista ligada num dado campo de memoria alocada posso fazer uma espécie de estrutura? para inserir o nome e os números de telefone e telemóvel?

    Se poder por um pequeno exemplo na resposta agradecia.

    Obrigado.
     
  2. manelis

    manelis Power Member

    Por norma fazes 2 estruturas, uma que tem os dados que queres por num elemento da lista e um ponteiro para o elemento seguinte (ou seja, pa outra estrutura destas), e uma estrutura que tem 2 ponteiros, um po inicio da lista o outro para o fim.
     
  3. Eu percebi a ideia em si. Mas não entendi bem uma parte que foi:
    e uma estrutura que tem 2 ponteiros, um po inicio da lista o outro para o fim.
     
  4. dagas46

    dagas46 Power Member

    Uma vez que se tratam de listas ligadas (presumo que apenas numa direcção), convém saberes onde começa a lista para que consigas percorrer toda a lista, daí teres um ponteiro para o início da lista. Convém também teres um ponteiro para o fim da lista porque assim sempre que quiseres inserir uma pessoa sabes onde a tens de inserir e não precisas de percorrer a lista toda
     
    Última edição: 13 de Novembro de 2012
  5. Sim sim. isso eu sei. Mas eu estou a pensar inserir ordenado.

    Eu só queria saber se é possível fazer a parte de inserir o nome com os números e fosse possível aceder.
     
  6. dagas46

    dagas46 Power Member

    É possível sim
     
  7. Ok obrigado se entretanto durante a elaboração do codigo tiver mais alguma duvida vou postando
     
  8. Boas alguém me sabe dizer como posso fazer uma espera até que o utilizador prima a tecla enter???

    Por exemplo eu imprimo no ecrã o que está na lista mas queria que o utilizador clicasse em enter e só depois fazer o system ("clear");
     
  9. mauro1855

    mauro1855 I'm cool cuz I Fold

    Podes usar o getchar();

    Quanto às listas, claro que dá para meter lá várias coisas dentro.
    E isso depois as listas podes fazer de várias formas e com ponteiros para montes sítios. Listas ligadas, listas duplamente ligadas, anéis, árvores, listas com ponteiros para marte, epá, é o que for.
    No entanto, a forma mais simples de fazer uma lista é mesmo uma lista simplesmente ligada, apenas com um ponteiro para o elemento seguinte.

    Código:
    typedef struct list_{
        char name[20];
        char phone_number[10];
        char mobile_number[10];
    
        struct list_ * next;
    } list;
    O básico das listas: [C] Listas Simplesmente Ligadas - Exemplo de Aplicação (inteiros) - Mauro1855

    Cumps
     
  10. Obrigado pela parte das listas. Mas a parte do getchar(); não funcionou.
     
  11. dagas46

    dagas46 Power Member

    Não funcionou?

    Dá algum erro ou simplesmente ignora a instrução?

    Se puderes, coloca essa parte do código sff
     
  12. Ignora completamente a instrução.

    if(opcao1==1)
    {
    LISTARpessoas(topolista);
    getchar();
    }

    Isto é para imprimir as pessoas que estão na lista mas eu queria esperar que o utilizador premisse enter para continuar e só depois fazia a limpesa do ecra e voltava ao menu principal
     
  13. mauro1855

    mauro1855 I'm cool cuz I Fold

    O getchar(); costuma funcionar.
    Se tiveres em Windows experimenta system("pause");, mas isso já não é muito aconselhado, penso.
    O getchar() regra geral devia funcionar.

    Senão podes podes fazer fgets(string, 10, stdin), onde 'string' é um vector de caracteres previamente declarado com 10 posições.
    Ou podes usar read(0, string, 10), sendo 0 uma referência à stdin - standart input = teclado (default).

    Até mesmo um scanf("%s", string); chega, mas este pode dar outros problemas.

    Cumps
     

Partilhar esta Página