View Full Version : Listas ligadas C++


Keith
23-12-2007, 00:02
Boas.

Gostaria de vos pedir ajuda com um bocado de código que escrevi:

void Eliminacao(string str)
{
int i, F = 0;
Node * Serie, * S1, * S2;

for (i=0;i<NJ;i++)
{
S1 = S2 = Serie = &Series[i];

while ((S2) && (S2->ID != str)) { S1 = S2;
S2 = S2->next; }

if (S2->ID == str) { if (S2 == Serie) { Serie = Serie->next; }
else { S1->next = S2->next; } }

Series[i] = *Serie;
}
}Series é um array com uma lista ligada pendurada em cada uma das posições.
O problema é que, se houver elementos repetidos na mesma lista, este código apenas remove apenas o primeiro que aparecer.

Já dei voltas ao código e não consigo colocar isto dessa forma.

Alguém me pode ajudar?

Muito obrigado e Feliz Natal a todos.
Keith

Ace-_Ventura
24-12-2007, 02:47
Penso que seja algo deste género

void Eliminacao(string str)
{
int i;
Node * Serie, * S1, * S2, *temp;

for (i=0;i<NJ;i++)
{
S1 = &Series[i];
S2 = S1;
while (S1 && S2) {
if (S1->ID == str) {
temp = S1;
S2->next = S1->next;
S1 = S1->next;
free_node(temp); //tua função de free para os nodes;
}
else {
S2 = S1;
S1 = S1->next;
}
}
}
}

deve faltar prai cenas mas pronto :P