J'ai une mission pour créer un tableau d'entiers qui se comporte comme une pile. tous mes push, pop fonctions fonctionnent parfaitement bien, mais im exécute un problème lorsque je tente de doubler la taille de mon tableau (ce qui arrive quand j'essaie de pousser sur une gamme complète). Voici le code que j'ai à ce jour...
De-tête du fichier:
class Stack
{
public:
int size, front, back;
void createStack(int);
void push(int);
void extendSize();
void printElements();
int pop();
int getSize();
bool isEmpty();
bool isFull();
private:
int* stackArray;
int* newArray;
};
- class Stack
- {
- public:
- int size, front, back;
- void createStack(int);
- void push(int);
- void extendSize();
- void printElements();
- int pop();
- int getSize();
- bool isEmpty();
- bool isFull();
- private:
- int* stackArray;
- int* newArray;
- };
La fonction im essayant de mettre en œuvre:
void Stack::extendSize()
{
newArray = stackArray;
stackArray = new int[size*2];
stackArray = newArray;
size *= 2;
}
- void Stack::extendSize()
- {
- newArray = stackArray;
- stackArray = new int[size*2];
- stackArray = newArray;
- size *= 2;
- }
extendSize () fonctionne mais quand je imprimer les éléments de la pile il ressemble à ceci:
Index 0 = 3
Index 1 = 3
Index 2 = 3
Index 3 = 3
Index 4 = 3
Index 5 = 3
Index 6 = 3
Index 7 = 3
Index 8 = 3
Index 9 = 3
Index 10 = 3
Index 11 = -1414812757
Index 12 = -1414812757
Index 13 = -17891602
Index 14 = 0
Index 15 = 0
Index 16 = 1522491621
Index 17 = 469763407
Index 18 = 5001472
Index 19 = 5000384
Les éléments à la fin ne sont pas mis à 0 alors j'ai fini par obtenir une corruption dans le tas. Un conseil?