Lista Ligada C

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]
};
 
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]
};

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

Sim..isso já tinha percebido....mas...faço isso através d'um simples "for"(ou "while")?
 
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
 
Back
Topo