Estou tentando criar uma estrutura de dado que suporte um vetor de listas encadeadas, as listas guardam os ponteiros para os primeiros elementos das listas, ou seja, cada elemento do vetor é a cabeça de uma lista encadeada.
// define elemento da lista typedef struct no { int info; struct no *prox; } No; // define tipo lista encadeada typedef struct { No *no; } Lista; // define tipo vetor de listas encadeadas typedef struct { Lista *lista1; } VetListas;
A função para criação do nó e da lista ficaram assim:
// cria um no, preenche o valor info, e aponta "->prox" para NULL Lista *criaNo(Lista *l, int info) { No *novo=(No*) malloc (sizeof(No)); novo->info=info; novo->prox=NULL; return(novo); } // cria dinamicamente um vetor de listas com "tamLista1" elementos VetLista *criaLista(int tamLista1, int tamLista2) { VetLista *_l=(Lista*)malloc(sizeof(Matriz)); int i; me->lista1 = (No*) malloc(tamLista1*sizeof(*No)); for (i=0;i<tam;i++) me->lista1[i]=NULL; return(_l); }
Esta´ dando um erro de incompatibilidade, alguém pode me ajudar a enxegar meu erro?!?!
int main() { VetLista *l = meCria(4); // cria vetor com 4 elementos/listas free(l); }
Segue abaixo codigo completo:
// CODIGO COMPLETO // #include <stdio.h> #include <stdlib.h> typedef struct no { int info; struct no *prox; } No; typedef struct { No *no; } Lista; typedef struct { Lista *lista1; } VetListas; Lista *criaNo(Lista *l, int info) { No *novo=(No*) malloc (sizeof(No)); novo->info=info; novo->prox=NULL; return(novo); } VetLista *criaLista(int tamLista1) { VetLista *_l=(Lista*)malloc(sizeof(Matriz)); int i; me->lista1 = (No*) malloc(tamLista1*sizeof(*No)); for (i=0;i<tam;i++) me->lista1[i]=NULL; return(_l); } int main() { VetLista *l = criaLista(4); // cria vetor com 4 elementos/listas free(l);