Partage
  • Partager sur Facebook
  • Partager sur Twitter

Table de hachage

Débutant en Programmation Objet-Avancé

    2 octobre 2011 à 22:43:12

    Bonjour à tous !

    J'espère que vous allez bien !

    J'aurais une question . Je suis présentement au Cegep (Quebec) . Je suis présentement sur un projet dans mon cours de programmation objet-avancé en c#.

    Le but de notre travail est de faire une table de hachage .

    J'aurais des petites intérogations .

    J'ai fait initialisé ma table : private LinkedList<IEntreeDeTable>[] m_tabElements;
    J'ai fait mon code qui permets d'ajouté des données (Je ne suis pas certain que c'est juste, n'hésitez pas à me corriger ^^):

    Citation

    int indexEntre = 0;
      switch (m_TypeDeProcedes)
                {
                    case enuProcedes.Type1:
                        indexEntre = CTableDeHachage.Type1(pElement.Cle) % m_tabElements.Length;
                        break;
                    case enuProcedes.Type2:
                        indexEntre = CTableDeHachage.Type2(pElement.Cle) % m_tabElements.Length;
                        break;
                    case enuProcedes.Type3:
                        indexEntre = CTableDeHachage.Type3(pElement.Cle) % m_tabElements.Length;
                        break;
                    case enuProcedes.Type4:
                        indexEntre = CTableDeHachage.Type4(pElement.Cle) % m_tabElements.Length;
                        break;
                    default:
                        break;
                }
    
    
                if (m_tabElements[indexEntre] != null)
                {
    
                    m_tabElements[indexEntre].AddLast(pElement);
                    m_count++;
    
                }
                else
                {
                    m_tabElements[indexEntre] = new LinkedList<IEntreeDeTable>();
                    m_tabElements[indexEntre].AddFirst(pElement);
                    m_count++;
                }
               
            }
    

    Ma question est que j'ai de la difficulté à effacer toutes les données de ma table. J'esseye de faire une boucle foreach

    foreach(IentredeTble item in m_tabElements)
    {
    }

    Votre aide me sera bénéfique :D
    • Partager sur Facebook
    • Partager sur Twitter
      3 octobre 2011 à 9:42:40


      La méthode Clear de LinkedList ne serait-elle pas mieux qu'un foreach?

      Si tu veux vider les éléments par toi-même, tu ne peux pas modifier une liste en cours d'énumération...Il suffit de passer par autre chose qu'une énumération :D :
      while(m_tabElements.Count != 0)
      {
          m_tabElements.RemoveFirst();
          //Ou alors m_tabElements.RemoveAt(0); si t'es dans une liste classique
      }
      


      Par contre, je ne comprend pas trop, dans ton code tu fais appel à m_tabElements.Length...Mais sur la doc du MSDN, cette propriété n'existe pas...C'est bien une LinkedList de System.Collections.Generic?
      </span>
      • Partager sur Facebook
      • Partager sur Twitter
        3 octobre 2011 à 14:15:48

        Bonjour,

        Déjà, penser à utiliser la balise code, ça sera plus lisible :)

        Ensuite, j'avoue ne pas trop comprendre l'intérêt/l'utilité d'un tableau de listes chainées mais il y a sans doute une raison.
        @Nisnor: d'où la propriété Length existante sur les types tableaux ;)


        Pour ce qui est d'effacer le contenu du tableau donc, tu peux utiliser la méthode statique Array.Clear comme ceci :
        Array.Clear(m_tabElements, 0, m_tabElements.Length);
        

        Ceci ne "vide" pas le tableau (après tout c'est un tableau on ne peut y ajouter ou y supprimer des éléments), dans ton cas cela placera juste chaque élément à null.

        Après peut-être que ce que tu souhaites effacer le contenu de chaque LinkedList élément du tableau, dans ce cas on peut faire ceci :
        // j'aurais pu mettre "var item", mais ça reste plus clair sur le type de item ici
        foreach (LinkedList<IEntreeDeTable> item in m_tabElements)
        {
            item.Clear();
        }
        

        Ainsi en fin de boucle tu auras un tableau de listes vides.

        En espérant que cela t'ait aidé, cordialement !
        • Partager sur Facebook
        • Partager sur Twitter
        Censément, quelqu'un de sensé est censé s'exprimer sensément.
          3 octobre 2011 à 17:24:39

          Citation : Sehnsucht

          @Nisnor: d'où la propriété Length existante sur les types tableaux ;)


          Ah ba voila XD. J'avais mal lu son code, j'ai cru qu'il utilisait un LinkedList et non un tableau d'élément de type LinkedList ^^.
          • Partager sur Facebook
          • Partager sur Twitter
            4 octobre 2011 à 1:14:23

            Tabarnouche !! Merci de vos conseils !!

            Sehnsucht : On est entrain d'étudie les listes chaînées et il a prit cela pour nous faire travailler sur les listes.

            Sympa comme forum merci beaucoup

            Je vous aimes :D lol ^^
            • Partager sur Facebook
            • Partager sur Twitter
              4 octobre 2011 à 4:56:04

              Du C# au Cégep? Je suis impressionné.

              Oh, mais y'a de la notation hongroise. Me semblait aussi qu'ils pouvaient pas être si progressistes.

              • Partager sur Facebook
              • Partager sur Twitter

              Table de hachage

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown