2014-09-13 3 views
0

Donc je suppose que ma question est un peu noobish mais nous avons juste commencé les listes chaînées, les piles et les files d'attente et je me sens un peu perdu en termes de syntaxe.Liste chaînée Implémentation d'une pile en C++

J'ai une structure de liste liée fonctionnante avec l'addition à l'avant et à l'arrière, poussant, sautant, supprimant etc. mais je deviens fou perdu quand il s'agit d'appeler ces fonctions dans l'empilement. La déclaration de la classe Linked List se trouve dans un fichier d'en-tête avec des définitions de fonctions dans un fichier .cpp. La pile est exactement la même histoire. Nous avons reçu le fichier d'en-tête avec les déclarations de fonction et nous devons écrire nos propres définitions dans un fichier .cpp distinct.

Mon problème réside dans l'appel des fonctions de liste chaînée dans les fonctions de pile. La pile inclut une "donnée LList" (la structure de liste liée est appelée LList); un pointeur vers un entier (je suppose) "int * data" et un entier suivi le haut de la pile "int t"

Les fonctions que nous devons écrire sont le constructeur, le destructeur, le pop, le push et la taille les fonctions. Je donnerais le code source mais ce n'est vraiment pas important de travailler avec.

J'espère que ma question peut être comprise> _ < Merci à l'avance Cameron

+0

Vous n'avez pas réellement décrit ce qu'est le problème ... – wakjah

+0

Je ne sais pas par où commencer quand il s'agit de définir les fonctions de pile données et je ne sais pas comment appeler les fonctions de liste chaînée déjà existantes dans le fichier de définition de la fonction de pile – user3546819

+1

Si vous avez déjà une liste chaînée qui fonctionne, il semblerait que vous ayez seulement à pousser à l'arrière et à sauter de l'arrière pour la traiter comme une pile. Sans voir le code que vous avez, c'est difficile à dire. – Logicrat

Répondre

1

Une pile est juste une liste liée à des fonctions d'interface différentes. Vous devez seulement être capable de push éléments au "haut" de la pile, et pop à partir du haut.

Il semble que votre implémentation de classe Stack soit conçue pour être un wrapper autour de la classe LList que vous possédez déjà.

Sans entrer dans les détails (ce qui est un peu dur sans regarder le code),

  1. Vous avez une classe Stack avec une LList en tant que variable membre (de préférence privée). La fonction push devrait simplement être insérée dans la queue de votre liste liée.
  2. Votre fonction pop devrait supprimer le dernier élément de la queue de votre liste chaînée
  3. Votre implémentation ~Stack devrait supprimer l'objet LList créé; vous pouvez ignorer cela si vous utilisez des pointeurs intelligents ou utiliser le mot-clé delete si vous avez créé manuellement un objet à l'aide de new.

Plus de code aidera à affiner cette réponse.

+0

Je pense que 'LList' ne devrait pas être appelé manuellement - il est appelé automatiquement juste avant que l'objet soit supprimé. Appeler manuellement d-tor quand il n'est pas conçu pour l'autoriser peut provoquer des erreurs. – GingerPlusPlus

Questions connexes