Попытка сделать статический стек, который реализует push, pop & peak
Поэтому я реализовал приведенный ниже код, пытаясь создать интерфейс, который бы использовал push, pop и peek(пока не реализовано). Он собирает и компилирует, но не позволяет вводить имена. Реализован вопрос Y/N, который запрашивает новое имя, но как только я наберу 'y', программа завершится, и я не понимаю, почему.
#include <iostream>
#include <string>
using namespace std;
const int maxstack = 5;
struct stacktype {
string name[maxstack];
int top;
};
void destroystack(stacktype &stack);
void createstack(stacktype &stack);
bool fullstack(stacktype stack);
bool emptystack(stacktype stack);
void push(stacktype &stack, string &newelement);
void pop(stacktype &stack, string &poppedelement);
int main()
{
stacktype stack;
string newelement, poppedelement;
char quest;
createstack(stack);
cout << "Do you want to enter data (y/n)? ";
cin >> quest;
while ((quest == 'y' || quest == 'Y') && !(fullstack(stack)))
{
cout << "Please enter name: ";
cin >> newelement;
push(stack, newelement);
cout << "Do you want to enter data (y/n)? ";
cin >> quest;
}
cout << endl << endl;
while (!emptystack(stack))
{
pop(stack, poppedelement);
cout << poppedelement << endl;
}
destroystack(stack);
system("pause");
}
void createstack(stacktype &stack)
{
stack.top = -1;
}
void destroystack(stacktype &stack)
{
stack.top = -1;
}
bool fullstack(stacktype stack)
{
if (stack.top = maxstack - 1) return 1;
else return 0;
}
bool emptystack(stacktype stack) {
if (stack.top == -1) return 1;
else return 0;
}
void push(stacktype &stack, string &newelement)
{
stack.top++;
stack.name[stack.top] = newelement;
}
void pop(stacktype &stack, string &poppedelement)
{
poppedelement = stack.name[stack.top];
stack.top--;
}