Ovvelha 0 Denunciar post Postado Outubro 15, 2008 Fala Galera, poxa, sempre tive dificuldade em alocação dinamica, não consigo entender e to com dificuldade pra fazer este exercicio: Dada uma lista ENCADEADA de registros, cada registro possui a seguinte estrutura: Código da Matrícula, Nome, CPF. Por um erro do programador no passado...o programa de inclusão permitiu incluir 2 ou mais vezes pessoas com o mesmo CPF. Considere que a lista é composta por N registros. Esta lista está ordenada por código de Matrícula. Faça o algoritmo para deletar APENAS OS REGISTROS REPETIDOS, DEIXANDO APENAS UM CPF válido na lista. não faço a menor ideia de como começar isso ou por onde queria uma ajuda nem precisa postar algoritmo, falando a lógica já me ajuda e bastante realmente não sei nem por onde começar isso, não sei como fazer para comparar se alguem poder me ajudar, pra mim serve qualquer coisa, a lógica, o algoritmo, implementado, tanto faz, pq realmente sempre tive dificuldades e não sei como fazer isso valeu! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Outubro 16, 2008 Primeiro precisa entender um pouco de lista encadeada para inserir os dados. Feito isso, a lógica para excluir não é tão difícil. Para facilitar voce pode criar uma função que exclua um elemento da lista pelo cpf. Essa função receberá o cpf e na primeira ocorrencia na lista excluirá o elemento. Para excluir, voce precisa liberar o espaço de memoria ocupado pelo dado. Além disso é necessário refazer as ligações. Vamos a um exemplo: a - b - c - d - e Para liberar c eu preciso fazer a ligação b com d, por isso se o elemento não for o primeiro e nem o último que são casos especiais, para refazer a ligação precisamos da referencia do elemento anterior. Pense na lógica de como seria a exclusão do primeiro e do último. Compartilhar este post Link para o post Compartilhar em outros sites
Ovvelha 0 Denunciar post Postado Outubro 16, 2008 para deletar o primeiro, cria um ponteiro "i" que aponta pro primeiro elemento da lista caso quer deletar ele, o i apontara ai pro proximo e o ultimo, cria um ponteiro "f" que aponta pro ultimo quando deletar ele o f aponta pro anterior e o campo proximo do f fica nulo seria isso? i=inicio f=final campo proximo é as ligações Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Outubro 20, 2008 O primeiro é isso mesmo. Para excluir o último basta liberar a memoria e fazer com o o penúltimo aponte para NULL. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites