Ir ao conteúdo
  • Cadastre-se

Ajuda Trabalho


peerox

Posts recomendados

Eu preciso implementar uma lista estática duplamente encadeada, porém não estou conseguindo manipular
vetores de struct com ponteiro, preciso encadear o vetor de struct item.
 
 por exemplo: list->item[indice].prox = list->item[indice + 1];
 
Eu não entendi ainda como é a sintaxe para passar endereço da struct para ponteiro e vice-versa.
Obs 1: Vi em alguns lugares o uso de "&list->item[indice]" como passagem de endereço, porém estou na dúvida ainda.
 
Obs 2: Uma outra forma de implementar a lista estática encadeada seria criar um ponteiro do tipo elemento na ListaString e alocar na função createLista a quantidade de itens e fazer o ponteiro do tipo elemento da lista apontar para esse novo bloco de memória alocado, porém não consigo manipular assim também!
 
Se alguém conseguir me dar um exemplo de como encadear o vetor item de uma das maneiras apresentadas seria de grande ajuda!
 
1º Maneira
 
struct elemento {                                                      char *info;  struct elemento *prox;  struct elemento *ant;};  struct ListaString {  struct elemento *inicio;                                            struct elemento *fim;  int currentSize;    struct elemento item[max];};void * createLista(int tamanho){          struct ListaString *list = malloc(sizeof(struct ListaString *));           Duvida a partir daqui aqui!}
========================================================================================================
 
 
2º Maneira
 
struct elemento {                                                      char *info;  struct elemento *prox;  struct elemento *ant;};struct ListaString {  struct elemento *inicio;                                            struct elemento *fim;  int currentSize;    struct elemento *item;};void * createLista(int tamanho){         struct ListaString *list = malloc(sizeof(struct ListaString *));     Duvida a partir daqui aqui!}
Link para o comentário
Compartilhar em outros sites

Eu não compreendi o protótipo das suas estruturas. Parece que tem coisa a mais.

Lista duplamente encadeada tem um ponteiro para nodo anterior e um ponteiro para nodo posterior. O resto é para os dados.

No caso há um ponteiro para informação, suponho.

 

Por que o item de elemento tem nodos? É uma lista com sublistas, como se fosse um varal com objetos pendurados?

 

+-+-+-+-+...

|    |    |    |

|    |    |    |

.......................

 

Poderia ser chamada de lista-pai e lista-filho.

 

Caso seja isto:

 

Necessitaria de duas funções, ao menos, para cada coisa.

 

Duas para criar listas: uma para o "varal" e outra para a lista que descente dele. 

No mínimo um parâmetro prá decidir o tipo de nodo a criar.

Inclusive duas para navegar por entre os nodos e duas para apagá-los, uma prá cada tipo

 

Nisto seu uso de malloc (ou calloc) procede. Não se esqueça usar um if prá verificar se a alocação foi feita.

Mas precisa de outra função prá criar o outro tipo de nodo.

Link para o comentário
Compartilhar em outros sites

Então cara, eu peguei um exemplo desse trabalho com um colega em que ele declara 2 variáveis inteiras no nodo para indiciar a ligação entre os mesmos, e também como referência ao index do vetor de struct.

Essa solução certamente está melhor e mais limpo do que a ideia que tinha em mente, estava focado no modo de implementação de uma lista dinâmica + o fator de que resta pouco tempo pra termina o trabalho que acabei complicando o fácil rs! 

valeu pela atençao! Abraços.

 

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!