Ir para conteúdo
Thiago Medeiros_80190

Dúvida - Lista Encadeada C - Zivianni

Recommended Posts

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro TipoCelula não é obrigatório, você pode usar a seguinte sintaxe:

 

typedef struct {
     TipoItem Item;
     TipoApontador Prox;
} TipoCelula;

Contudo, a sintaxe não está incorreta, onde o primeiro TipoCelula é um identificador e o segundo é um alias.

 

Leia mais em: https://pt.wikibooks.org/wiki/Programar_em_C/Estruturas

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como complemento, o identificador você pode usar um nome mais detalhado, mais explicito. Enquanto que o alias você pode usar um nome curto, mais simples.

 

A fato do autor ter usado o identificador com o mesmo nome do alias não muda nada, neste caso.

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 25/04/2017 at 16:00, Thiago Medeiros_80190 disse:

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.

 

Não dá erro algum. Funciona se tirar qualquer um dos dois ou até mesmo os dois.

Editado por Wilkyn Fernandes Taborda
Pulo de linha acima do texto digitado por mim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por paulopoxoreo1234@gmail.com
      Dado o trecho de código em C listado abaixo responda as perguntas a seguir.
      Cont = result = 1;
      For ( i=0; i<5; i= i+0.1){
            Cont = cont+i;
            Result  *= cont;
            Printf(“%f", result);
      }
      a)      O que será impresso depois da primeira iteração deste código?
      b)      Quantas vezes este laço precisará ser executado para que encontre a condição de término ?
      c)      Faça um trecho de código em C para quebrar esse laço na decima quinta iteração.
    • Por ednan
      estou precisando de ajuda neste trabalho se alguem souber e puder ajudar agradeço de coraçao
       
    • Por Hokage1
      Boa Tarde estou quebrando a cabeça com um trabalho, podem me ajudar ?:
       
      ara execução do projeto final siga as instruções: 
       
      (Tarefa 1) Elaborar um programa em Linguagem de Programação C com 2 interfaces (telas); uma para o cadastro dos 10 estudantes e outra para os dados analíticos. (Tarefa 2) Somente após finalizar a Tarefa 1, faça uma investigação para identificar quais recursos (não abordados nesta disciplina), em Linguagem de Programação C, que poderiam tornar a construção desta aplicação mais sofisticada e, até mesmo, mais fácil de implementar? Explique (não há necessidade de implementar o novo recurso). Enviar a resposta da Tarefa 1 (código-fonte escrito em Linguagem de Programação C) e da Tarefa 2 para avaliação em um arquivo no formato MS-Word com nome no seguinte padrão: LCC-IA-2020-3-Mod3-Projeto-Seu_Nome.docx (Arquivos nomeados fora deste padrão serão descartados). Use o fórum do Módulo 03 para postar suas dúvidas e/ou colaborar com os colegas.  
      TAREFA 1 – Programa de cadastro e análise de dados de 10 Estudantes:
      1.Tela: Criar a tela a seguir que permita a entrada de dados de 10 estudantes diferentes. Assim que o usuário digitar os dados do último estudante, o programa deverá ir para a 2.tela.
      Tela 1 – Interface (Tela) para cadastro de 10 estudantes
      2.Tela: Criar a tela a seguir que apresente os dados analíticos, a partir dos dados digitados na Tela 1. Na sequência, encerrar o programa.
       
      tela 2 – Interface (Tela) do quadro analítico
      OBSERVAÇÕES:
      Todos indicadores do Quadro Analítico deverão ser calculados (nenhum digitado pelo usuário);
       
      A “Maior Nota Individual” deverá ser a maior nota obtida por um estudante em qualquer uma das 2 avaliações; A “Menor Nota Individual” deverá ser a menor nota obtida por um estudante em qualquer uma das 2 avaliações; A “Média da Sala” deverá ser a média das médias dos 10 estudantes; A “Melhor Média da Sala” deverá ser a maior média obtida por 1 estudante; A “Pior Média da Sala” deverá ser a menor média obtida por 1 estudante.
    • Por sidius
      ei galera, minha professora pediu para que eu calculasse matrizes utilizando a linguagem c, poderiam me dar uma luz ae?? ficaria grato, tenho grande dificuldade no assunto

    • Por juliaKrunker
      1- O comando typedef pode ser utilizado para criar novos comandos, ou simplesmente novas formas de escrever
      determinados comandos em linguagem C. Por exemplo, toda vez que você quiser criar uma variável do tipo struct
      declarado acima, terá que escrever o nome completo do tipo, isto é struct lista. Usando o comando typedef, defina um
      tipo alternativo, chamado Lista, que possa ser usado em lugar de struct lista.

      2-  Usando o tipo Lista que você criou na questão 3, declare uma variável chamada myList que possa ser utilizada para
      construir uma lista encadeada.
       
      3- (0,5) Usando o tipo Lista que você criou na questão 3, declare uma variável chamada novo que possa ser utilizada para criar
      um novo elemento para a lista declarada na questão 4.

      4- Escreva uma linha de código que aloque espaço na memória para a variável novo declarada na questão 5, de forma
      que a variável possa ser utilizada para inserir um novo elemento na lista myList declarada na questão 4.

      5 -Considerando a variável myList declarada na questão 4 e a variável novo declarada na questão 5 e alocada na questão
      6, atribua os valores 1 para o atributo id e 9.1 para o atributo valor e insira-a na lista myList.
       
      6- O trecho de código apresentado a seguir, refere-se a uma função que receberá como parâmetro um ponteiro para
      uma lista do tipo Lista e deverá calcular e retornar a média dos valores existentes na lista. Escreva o corpo da função.

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.