int main()
{
char ans = YES;
Stack card;
int arr[CARD_PER_DECK];
int catchVar;//to hode values popped off the stack
int size = 0;
// put shuffled cards into the stack
inOrder(arr, CARD_PER_DECK, CARD_NUM_RANGE);
randomize(arr, CARD_PER_DECK);
// print(arr, CARD_PER_DECK, card);
for (int i = 0; i < CARD_PER_DECK; i++){
card.push(arr[i]);
cout << arr[i] << " ";
}
cout << endl;
//testing popping
for (int i = 0; i < CARD_PER_DECK; i++){
card.pop(arr[i]);
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
void swap(int *a, int*b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void randomize(int arr[], int n)
{
srand(time(NULL));
for (int i = n-1; i>0; i--){
int j = rand()%(i+1);
swap(&arr[i], &arr[j]);
}
}
void print(int arr[], int n, Stack card)
{
for (int i = 0; i < CARD_PER_DECK; i++){
card.push(arr[i]);
cout << arr[i] << " " ;
}
cout << endl ;
}
//stack.cpp
Stack::Stack()
{//Sets stack to initial empty state
capacity = 1;
stackSize = 0;
stackArray = new int[stackSize];
top = -1;
}
void Stack::push(int num)
{
if (stackSize > capacity){
resize(capacity*2);
}
top++;
stackArray[top] = num;
stackSize++;
}
void Stack::resize(int newCap)
{
int* resizeArray = new int[newCap];
for (int i = 0; i < stackSize; i++)
resizeArray[i] = stackArray[i];
capacity = newCap;
delete[] stackArray;
stackArray = resizeArray;
}
Я попытался помещать рандомизированное число в стек и выталкивать их. он может скомпилироваться, но когда я запустил его, я получил эту ошибку: завершение вызова после вызова экземпляра «std :: bad_alloc'what(): std :: bad_alloc Я новичок в этом, может кто-нибудь сказать мне, как его исправить ?stack and queue странная ошибка
Благодаря
В качестве примечания: Call 'srand (время (NULL));' только один раз в функции 'main()'. Также обратите внимание: для этого вы можете использовать ['std :: random_shuffle()'] (http://en.cppreference.com/w/cpp/algorithm/random_shuffle). –
@ πάνταῥεῖ: как это исправить? – user3923936
Плохой адрес - это когда распределение памяти идет не так. Вероятно, это ваш класс 'Stack', который вы не указали. Также минимизируйте свой пример для затронутого кода. Предоставьте соответствующее сообщение об ошибке. –