堆栈是完全逻辑错误?

时间:2015-12-06 14:19:21

标签: data-structures stack

我正在学习堆栈数据结构,不幸的是在我的第一个代码中我得到的堆栈是完全运行时错误,因为我不太了解堆栈我无法在我的编写代码中跟踪错误请看看。 谢谢

#include

using namespace std;

struct Stack
{

    int data[15];
    int top;
};


void init(Stack &s)
{
    s.top=-1;
}

bool isEmpty(Stack s)
{
    if(s.top == -1)

        return true;

    else
        return false;
}

bool isFull(Stack s)
{
    if(s.top > 14)
    {
        return true;
    }
    else
    {
        return false ;
    }
}

void push ( Stack &s,int value)
{

    if(isFull(s) == true)
    {
        cout<<"Oooops Stack is Full :(\n";
    }
    else
    {
        s.top++;
        s.data[s.top]=value;
    }

}

int pop (Stack &s)
{
    int removedValue = s.data[s.top];
    s.data[s.top]=0;
    if(isEmpty(s)== true)
    {
        cout<<"Ohhh Stack is Empty\n";
    }
    else
    {
        s.top--;

        return removedValue;
    }

}

int top(Stack s)
{
    return s.top;
}
int main()
{
    Stack items;
    cout << "Hello Welcome to Stack!" << endl;
    push(items,1);
    cout<<pop(items)<<endl;



    return 0;
}

1 个答案:

答案 0 :(得分:0)

好的人在这里是错误..

我在main中声明了一个名为Stack的新堆栈,但没有使用

初始化它

void init(Stack &s) { s.top=-1; }

所以这是通过在main()

中初始化堆栈的答案
Stack items;
init(items);