Hey all! Avoir un peu de mal avec ma pile. Im essayant d'imprimer chaque élément que j'ai poussé sur la pile. A partir de la pile ctor, nous savons que nous avons une taille fixe pour le tableau. Donc, je les éléments struct allouer objet à tenir juste que beaucoup d'espace:Mise en œuvre de la pile C++
stack::stack(int capacity)
{
items = new item[capacity];
if (items == NULL) {
throw "Cannot Allocoate Sufficient Memmory";
exit(1);
}
maxSize = capacity;
top = -1;
}
Oui, objets est un type struct de l'objet « item ». Jetez un coup d'oeil:
class stack
{
stack(int capacity);
~stack(void);
...
private:
int maxSize; // is for the item stack
int top; // is the top of the stack
struct item {
int n;
};
item *items;
public:
friend ostream& operator<<(ostream& out, stack& q)
...
D'abord et formost nous voulons ajouter à la pile en appuyant sur chaque élément entrant dans le tableau FILO:
bool stack::pushFront(const int n)
{
if (top >= maxSize-1)
{
throw "Stack Full On Push";
return false;
}
else
{
++top;
items[top].n = n;
}
return true;
}
// just a textbook example here:
stack::~stack(void)
{
delete [] items;
items = NULL;
maxSize = 0;
top = -1;
}
Oui la vraie question pour moi est les articles [++ top] .n = n; déclaration. J'ai essayé de découvrir comment je peux glisser (+) le tableau d'éléments pour voir TOUS les éléments du tableau après que je pousse sur la pile. Je me demande pourquoi je ne peux pas faire glisser les éléments [++ top] .n = n instruction quand je suis en train de déboguer. Tout ce qui vient est la valeur qui est passée en tant que 'n' paramater. Dois-je utiliser un tableau de type d'objet stack pour stocker les valeurs?
Quand je surcharger l'opérateur < < et essayer d'imprimer les éléments que je reçois un nombre négatif incroyablement grand:
ostream& operator<<(ostream& out, stack& q)
{
if (q.top <= 0) // bad check for empty or full node
out << endl << "stack: empty" << endl << endl;
else
for (int x = 0; x < q.maxSize; x++)
{
out << q.items[x].n; // try to print elements
}
return out;
}
Je suis loin et je besoin de guidence si quelqu'un a le temps!
Vous voulez voir les articles dans le débogueur? Quel éditeur utilisez-vous? – Naveen
N'utilisez pas la balise pre sur SO, mais le bouton de retrait de code à la place; voir ma dernière édition. –
Quel type d'opération Faire "sortir"? –