PIlhas com Listas na Linguagem C

4 respostas
paloma

Estou tentando implementar as funções de um exercício de pilhas só que agora com listas, mas está dando esse erro!

#include <stdio.h>
#include <stdlib.h>
#define MAX 21

typedef struct Sapato{
        char marca[MAX];
        char modelo[MAX];
        char cor[MAX];
        int num;
        struct Sapato *prox;
        }TSapato;

struct Pilha{
       TSapato *prim;
       }TPilha;

//FUNÇÃO LISTA VAZIA
TPilha *lse_vazia(void) ////O erro é esse aqui: expected constructor, destructor, or type conversion before '*' token // 

{
        return NULL;
}

//FUNÇÃO CRIAR PILHA 
TPilha *pilha_cria(void)
{
        TPilha *ptr;
        
        ptr=(TPilha*)malloc(sizeof(TPilha));
        if(!ptr){
               printf ("Erro:Memoria Insuficiente.Libere memória\n");
               return;
               }
        ptr->prim=lse_vazia();
        
} 
      
int main()
{
    system("PAUSE");
    return (0);
}

4 Respostas

thadeurc

te sugiro fazer o seguinte…

ao inves de struct Pilha{ TSapato *prim; }TPilha;
usar

typedef struct {
        TSapato *prim;
        }TPilha;
paloma

Na função criar pilha está dando um erro, conversão inválida de void para a variável do TSapato, alguém pode me dar uma ajuda???

#include <stdio.h>
#include <stdlib.h>
#define MAX 21

typedef struct Sapato{
        char marca[MAX];
        char modelo[MAX];
        char cor[MAX];
        int num;
        struct Sapato *prox;
        }TSapato;

typedef struct Pilha{
       TSapato *topo;
       }TPilha;

//FUNÇÃO LISTA VAZIA
void *lse_vazia()
{
        return NULL;
}

//FUNÇÃO CRIAR PILHA 
TPilha *pilha_cria(void)
{
        TPilha *ptr;
        
        ptr=(TPilha*)malloc(sizeof(TPilha));
        if(!ptr){
               printf ("Erro:Memoria Insuficiente.Libere memória\n");
            exit(-1);
               }
        ptr->topo=lse_vazia();
        return ptr;
        
} 

//VARIÁVEIS GLOBAIS
char marca[MAX], modelo[MAX], cor[MAX];
int num;

//FUNÇÃO AUXILIAR LER DADOS PILHA
void ler_dados()
{
     system("cls");
     
     printf ("Entre com a marca do sapato: ");
     fflush (stdin);
     fgets (marca,MAX,stdin);
     
     printf ("Entre com o modelo do sapato: ");
     fflush (stdin);
     fgets (modelo,MAX,stdin);
     
     printf ("Entre com a cor do sapato: ");
     fflush (stdin);
     fgets (cor,MAX,stdin);
     
     printf ("Entre com a numeracao do sapato: ");
     fflush (stdin);
     scanf ("%d", &num);
}     
     
     
int main()
{
    system("PAUSE");
    return (0);
}
paloma

Uma dúvida relacionada a este exercício, que ainda está incompleto, estava vendo aqui um semelhante no livro, e na função que cria a pilha é alocada memória e na função para inserir os elementos na mesma, também é alocada memória para a lista, pq isso já não aloquei memória para a pilha, no caso essa pilha em questão, nãos seria uma lista na qual só posso inserir ou retirar do topo?

jmp

paloma,

TPilha é uma variavel, nao um tipo. Nas funcoes, voce deve retornar o tipo e nao a variavel.

typedef struct TIPO {} Ttipo; - ttipo é variavel

variavel é opcional, nao é recomendado colocar a variavel declarada junto no typedef se voce for usar o tipo mais de uma vez.

voce deve deve retornar um TIPO* e nao um Ttipo*;

Se voce retornar void* vai funcionar, mas é um cast muito grosseiro, pode ser aí que esteja dando problema

Criado 15 de maio de 2006
Ultima resposta 16 de mai. de 2006
Respostas 4
Participantes 3