Ir ao conteúdo

Posts recomendados

Postado

@arfneto  seria uma estrutura que armazena de forma alinhada, estatica porque tem que ser pre definido o tamanho da capacidade de memoria, enfim, o problema desse meu codigo é que é necessario retirar elementos especificos não só removelo subistituindo por 0  mas remover até o espaco de memoria ou seja devo fazer uma fila dinamica. obrigado pela atenção @arfneto

Postado
15 minutos atrás, MadroxD disse:

uma estrutura que armazena de forma alinhada, estatica porque tem que ser pre definido o tamanho da capacidade de memoria

 

E

 

16 minutos atrás, MadroxD disse:

é necessario retirar elementos especificos não só removelo subistituindo por 0  mas remover até o espaco de memoria ou seja devo fazer uma fila dinamica

 

Então temos um problema. A primeira estrutura é um array. Você predefine o tamanho e declara como tal. Como um array de struct.

 

No segundo caso, se você quer remover um item e a área de memória correspondente então temos uma outra coisa.

 

Há muitas maneiras de implementar isso em C, mas entenda que as duas coisas você não pode ter. Alinhado, estático e que pode remover itens...

 

Pode ter algo híbrido, usando um vetor de tamanho fixo com ponteiros apontando para um conjunto de dados.

 

Eis como funciona isso: antes de tudo tem que ter um elemento, uma unidade. Pode testar com um único int e depois com uma struct tipo cadastro com nome/endereco/telefone/cep/e-mail por exemplo.Clássico. Essa é a unidade de informação e vamos definir que seja do tipo Item.

Item* valores[N];

Depois a estrutura. Clássicas estruturas são vetores, conjuntos, listas encadeadas, filas  e árvores por exemplo. Vou resumir duas apenas

 

Vetores

 

você tem seus itens e define uma capacidade N. Então terá N desses itens em um vetor estático 

 

por exemplo. Inicialmente todos os N valores apontam para NULL. Conforme vai inserindo os valores você aloca a memória para cada item e coloca o endereço lá no vetor. Se precisa apagar algum você libera a memória e coloca NULL no ponteiro correspondente. Isso corresponde mais ou menos ao que você precisa, exceto pelo vetor com tamanho fixo.

 

Listas encadeadas

 

Você tem sua lista de items inicialmente vazia onde cada elemento é obviamente um Item. Só que cada item tem mais dois ponteiros, endereços apontando para o Item anterior e o próximo. Ao inserir alguém você aloca a memória necessária e ajusta esses tais ponteiros para apontarem para o anterior e o próximo elemento. Essa noção de anterior e próximo você define como precisar: ordem baseada no valor de algum campo, na sequência de inserção, qualquer coisa.

E você mantém um único endereço, o endereço de início dessa coisa. Ao apagar um elemento você simplesmente libera a memória ocupada e reajusta os ponteiros. 

se perder o endereço de início perde tudo. Essa estrutura permite representar muitas situações práticas.

 

Escreva com mais detalhes sobre o problema que tenta resolver

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

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