La mise en œuvre de Sauter de la Liste en C++

[RÉSOLU]

J'ai donc décidé d'essayer et de créer un doublement chaînée triée sauter liste...

Je suis sûr que j'ai une bonne compréhension de la façon dont il fonctionne. Lorsque vous insérez x le programme de recherches de la liste de base pour l'endroit approprié pour mettre des x (puisque c'est triée), (conceptuellement) retourne une pièce de monnaie, et si la "pièce de monnaie" sur les terres alors que l'élément est ajouté à la liste ci-dessus(ou une nouvelle liste est créée avec élément en elle), lié à l'élément ci-dessous, et la pièce de monnaie est lancée à nouveau, etc. Si la "pièce de monnaie" terres sur b à tout moment, puis l'insertion est plus. Vous devez également avoir un infini stockées dans chaque liste comme point de départ de sorte qu'il n'est pas possible d'insérer une valeur qui est inférieure au point de départ (ce qui signifie qu'il n'a jamais pu être trouvé.)

À la recherche de x, vous commencez à la "en haut à gauche" (la plus haute de la liste de valeur la plus faible) et "déplacer vers la droite" à l'élément suivant. Si la valeur est inférieure à x que vous continuez à l'élément suivant, etc. jusqu'à ce que vous avez "allé trop loin" et la valeur est supérieure à x. Dans ce cas, vous retournez à la dernier élément et descendre d'un niveau, de la poursuite de cette chaîne jusqu'à ce que vous trouver x ou x est jamais trouvé.

Pour supprimer x vous suffit d'effectuer une recherche de x et de le supprimer à chaque fois qu'il arrive dans les listes.

Pour l'instant, je suis tout simplement aller faire un saut de liste qui stocke les nombres. Je ne pense pas qu'il y est quoi que ce soit dans la STL qui peut m'aider, je vais donc avoir besoin de créer une Liste de classe qui contient une valeur de type entier et a des fonctions de membre du, de recherche, delete et insert.

Le problème, je vais avoir, c'est de traiter avec des liens. Je suis assez sûr que je pourrais créer une classe permettant de gérer les "horizontale" des liens avec un pointeur vers l'élément précédent, et l'élément avant, mais je ne suis pas sûr de savoir comment faire face à la "verticale" des liens (point à l'élément correspondant dans la liste autres?)

Si toute ma logique est erronée, veuillez me dire, mais mes principales questions sont:

  1. La façon de traiter avec des liens verticaux et si mon idée de lien est correct
  2. Maintenant que j'ai lu de ma classe Liste d'idée, je pense qu'une Liste doit contenir un vecteur d'entiers plutôt que d'un simple entier. En fait, je suis assez positive, mais voudrais juste la validation de certains.
  3. Je suis en supposant que la pièce de monnaie serait tout simplement appeler int fonction rand()%2 renvoie une valeur de 0 ou 1, et si c'est 0, alors la valeur "niveaux" et si c'est 0, puis l'insérer. Est-ce incorrect?
  4. La façon de stocker une valeur similaire à l'infini?

Edit: j'ai commencé à écrire un peu de code et je suis d'envisager la manière de gérer la Liste de constructeur....Je suppose que sur sa construction, le "infini" valeur doit être stockée dans le vectorname[0] élément et je peux juste appeler insérer, après sa création à mettre le x à l'endroit approprié.

OriginalL'auteur trikker | 2009-08-13