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

Lista Ligada C

Discussão em 'Programação' iniciada por ugo_asus, 29 de Abril de 2008. (Respostas: 10; Visualizações: 3862)

  1. ugo_asus

    ugo_asus Power Member

    Boas...

    Alguem me pode dar uma luz sobre esta matéria...

    Por exemplo...fazer uma lista ligada que guarde o nome de utilizador e idade....

    A struct seria algo assim?

    struct utilizador
    {
    char nome[20];
    unsigned int idade;
    };

    ???
     
  2. Baderous

    Baderous Banido

    Falta só colocar um apontador para o próximo elemento da lista (para se poder chamar de "lista"):

    Código:
    struct utilizador {
        char nome[20];
        unsigned int idade;
        [B]struct utilizador *next;[/B]
    };
     
  3. ugo_asus

    ugo_asus Power Member

    Eu só não percebo é como é que funcionam as slots(acho que é assim que se chama)...

    como é que eu faço a procura dos utilizadores na lista....
     
  4. Slot não deve ser, ou eu pelo menos nunca ouvi falar nisso.

    Para procurares na lsita tens de a percorrer e comparar o campo pelo qual queres fazer a procura.
     
  5. arconada

    arconada Power Member


    Slots ou Nodes?
     
  6. ugo_asus

    ugo_asus Power Member

    Sim, deve ser Nodes...
     
  7. zyThuM

    zyThuM Power Member

    Um node e´ como o nome indica um no´ da lista, cada no´ e´ constituido por um elemento e no caso da lista simplesmente ligada por um apontador para o elemento seguinte da lista. No teu caso um elemento de um node e´ um utilizador.

    Outra coisa que deves saber e´ o que e´ a head e a tail da lista. A head da lista e´ um apontador para o primeiro elemento e a tail e´ um apontador para o ultimo elemento da lista.

    Para percorreres a lista para encotrares um utilizador o que tens de fazer e´ começar na cabeça da lista verificar para cada no´ da lista se esse no´ tem o utilizador que procuras. Se chegares ao fim da lista e nao encontrares o utilizador e´ porque ele nao existe.

    Espero que te tenha ajudado.
     
  8. ugo_asus

    ugo_asus Power Member

    Sim..isso já tinha percebido....mas...faço isso através d'um simples "for"(ou "while")?
     
  9. Sim.
     
  10. ugo_asus

    ugo_asus Power Member

    ok...vou ver se me safo...
     
  11. metralha761

    metralha761 1st Folding then Sex

    isto é das minhas aulas teoricas:
    Código:
    typedef struct lnode *List;
    typedef struct lnode {
      int info;
      List next;
    } List_node;
    para procurar
    Código:
    void procura_lista (List lista, int chave, List *ant, List *actual)
    {
      *ant = lista; *actual = lista->next;
      while ((*actual) != NULL && (*actual)->info < chave) 
      {
        *ant = *actual;
        *actual = (*actual) >next;
        *actual = (*actual)->next;
      }
      if ((*actual) != NULL && (*actual)->info != chave)
        *actual = NULL;   /* Se elemento não encontrado*/
    }
    espero ter ajudado :P
     

Partilhar esta Página