1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Listas ligadas C++

Discussão em 'Programação' iniciada por Keith, 22 de Dezembro de 2007. (Respostas: 1; Visualizações: 818)

  1. Keith

    Keith Power Member

    Boas.

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

    Código:
    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
     
    Última edição: 23 de Dezembro de 2007
  2. Ace-_Ventura

    Ace-_Ventura Power Member

    Penso que seja algo deste género

    Código:
    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
     

Partilhar esta Página