Ir ao conteúdo
  • Cadastre-se

Implementação - Lista Encadeada C - Zivianni


Posts recomendados

Pessoal, boa tarde!

Estou analisando o código do Ziviani de lista encadeada. Alguém sabe me explicar o porque da necessidade de se usar o TipoCelula no início da estrutura e no final? Pergunto pois, se eu tiro do início ele da o erro "error: conflicting declaration 'typedef struct TipoCelula TipoCelula" e se eu tiro do final ele funciona perfeitamente. Ainda não conseguir pegar a ideia.

Alguém poderia me auxiliar?

 

typedef struct {

    int Chave;

    /* outros componentes */

} TipoItem;

 

typedef struct TipoCelula *TipoApontador;

 

typedef struct TipoCelula {

      TipoItem Item;

      TipoApontador Prox;

} TipoCelula;

 

typedef struct {

      TipoApontador Primeiro, Ultimo;

} TipoLista;

Link para o comentário
Compartilhar em outros sites

Concordo MassakiMsk. Mas meu questionamento não foi isso.

 

A estrutura abaixo era pra funcionar sem o TipoCelula no inicio. Porém, é necessário ele. Isso que não ficou claro pra mim pois antes da declaração desta estrutura tem a linha "typedef struct TipoCelula *TipoApontador;"

 

typedef struct TipoCelula {

      TipoItem Item;

      TipoApontador Prox;

} TipoCelula;

 

Link para o comentário
Compartilhar em outros sites

Na verdade o que @MassakiMsk disse já é uma resposta, uma vez que TipoCelula ( no inicio ) é o nome próprio da struct.

Ao observar:

 

typedef struct TipoCelula {

      TipoItem Item;

      TipoApontador Prox;

} TipoCelula;

 

Usa-se typedef para 'apelidar', como um tipo, a partir de um objeto/etc já criado.

E a ultima TipoCelula é apenas um 'apelido' também, de um tipo, usado sempre depois da criação da struct.

 

Se você remover esse primeiro TipoCelula, você não ira criar simplesmente uma struct, e sim um tipo, a partir de uma struct, e ao usar:

typedef struct TipoCelula *TipoApontador;

 

Você esta declarando que a struct TipoApontador foi criada a partir da struct TipoCelula, o que não foi, por que é apenas um tipo, e afins...

Então para criar vários tipos de uma struct é necessário que ela exista com um Alias ( apelido inicial ), a não ser que apenas ela tenha seu próprio tipo.

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!