Я делаю эту программу, где вы должны использовать оператор switch в main для изменения стека, и у меня возникла небольшая проблема с оператором push.После того, как я ввел значение для помещения в стек, программа делает паузу и показывает эту ошибку: Exception thrown: write access violation.
**this** was 0x1AD0112. occurred
Ошибка указывает на мой файл cpp для методов в push ().
#include "Stack.h"
void Stack::push(int val) {
top = top + 1;
ary[top] = val; //this is where the exception is thrown.
//ary[top++] = val;
}
int Stack::pop() {
top = top - 1;
return ary[top + 1];
//return ary[top--];
}
int Stack::peek() const {
return ary[top];
}
bool Stack::isFull() const {
if (top == SIZE - 1)
return true;
else
return false;
//return top == SIZE - 1;
}
bool Stack::isEmpty() const {
if (top == -1)
return true;
else
return false;
//return top == -1;
}
Stack::Stack() {
top = -1;
}
И затем я вызываюметод в главном, чтобы поместить значение на вершину стека.
#include "Stack.h"
#include <iostream>
using namespace std;
int main() {
Stack s;
int x;
int y;
char c;
cin >> c;
do {
switch (c) {
case 'P': //push statement
cin >> x;
s.push(x);
break;
//case 'O':
//y = s.pop();
//cout << y << endl;
//break;
case 'K':
y = s.peek();
cout << y << endl;
break;
case 'Q':
return 0;
break;
}
} while (c != 'Q');
return 0;
}
Здесь также находится заголовочный файл
#ifndef STACK_H
#define STACK_H
class Stack {
private:
int top;
static const int SIZE = 10;
int ary[SIZE];
public:
int pop();
void push(int);
int peek() const;
bool isEmpty() const;
bool isFull() const;
Stack();
};
#endif
Ошибка возникает после ввода первого нажатиязначение.Любая помощь приветствуется!Спасибо