Ir ao conteúdo

Structs e lista encadeada


danielabr

Posts recomendados

Postado

Criei uma estrutura do tipo pessoa e pretendo usá-la em uma lista encadeada, porém o seguintes erros aparecem:

'No' has no member named 'dados', 'No' has no member named 'prox' e  unknow type name 'p'

 

O programa nem chegou a rodar, alguém pode me ajudar?

 

O arquivo .h é o seguinte:

__________________________________________________________________

#ifndef Pessoa

#define Pessoa
 
typedef struct pessoa{
    char nome[25];
    char sobrenome[25];
    int registro;
}Pessoa;
 
typedef struct no{
    Pessoa dados;
    struct no *prox;
}No;
 
typedef struct lista{
    No *cabeca;
    No *cauda;
    int tamanho;
}Lista;
 
No* criaNo(Pessoa p);
Lista* criaLista();
void inserir(Lista *l, Pessoa p, int posicao);
void remover(Lista* l, int registro); //pesquisa registro e remove a pessoa
void imprimeLista(Lista* l);
void destruirLista(Lista* l);
 
#endif
 
________________________________________________________________
 
O arquivo .c é o seguinte:
 
_______________________________________________________________
 
#include <stdio.h>
#include <stdlib.h>
#include "Pessoa.h"
 
No* criaNo(Pessoa p)
{
    No* n;
    n=(No*)malloc(sizeof(No));
    n->dados = p;
    n->prox = NULL;
    return n;
}
 
Lista* criaLista()
{
    Lista* l = (Lista*)malloc(sizeof(Lista));
    l->cabeca = NULL;
    l->cauda = NULL;
    l->tamanho = 0;
    return l;
}
void inserir(Lista *l, Pessoa p, int posicao);
 
{
 //já está pronta, porém não achei necessário colocá-la
}
 
void remover(Lista* l, int registro)
{
     //já está pronta, porém não achei necessário colocá-la
}
 
void imprimeLista(Lista* l)
{
    //já está pronta, porém não achei necessário colocá-la
}
 
void destruirLista(Lista *l)
{
    //já está pronta, porém não achei necessário colocá-la
}
 
Postado

@danielabr

 

 

Defina assim:

#ifndef PESSOA_H#define PESSOA_H

Remova também o ; que aparece ali na definição da sua função:

void inserir(Lista *l, Pessoa p, int posicao);{//já está pronta, porém não achei necessário colocá-la}

Note que faltou a função main() no seu arquivo .c. Basta incluí-la:

#include <stdio.h>#include <stdlib.h>#include "Pessoa.h" int main() {return 0;}No* criaNo(Pessoa p){    No* n;    n=(No*)malloc(sizeof(No));    n->dados = p;    n->prox = NULL;    return n;}...

LNW

Postado

Problemas: 1-teu #define Pessoa no arquivo Pessoa.h está conflitando com o tipo Pessoa do teu typedef struct... Pessoa

                  2-Na função abaixo tirar o ponto e vírgula

void inserir(Lista *l, Pessoa p, int posicao);//tirar o ponto e vírgula { //já está pronta, porém não achei necessário colocá-la} 

O resto não olhei, então, não me comprometo com tua implementação. Se está correta ou não você terá q testar e se tiver problemas vai postando e vamos tentando ajudar as dúvidas pontuais.

Arquivado

Este tópico foi arquivado e está fechado para 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...