Попытка сделать статический стек, который реализует 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--;
}

0 ответов

Другие вопросы по тегам