2015-12-06 4 views
0

Я изучаю структуру данных стека и, к сожалению, в моем первом коде, я получаю Stack is Full Run time error из-за моего меньшего знания стека. Я не могу отслеживать ошибку в моем письменном коде, пожалуйста, посмотрите. БлагодаряСтек полной логической ошибки?

#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

На каком языке это? C++? C#? – DrakaSAN

+0

написано на C++ –

ответ

0

OK людей здесь есть ошибка ..

я объявил новый стек с именем Stack в основном, но didnot инициализировать его с помощью

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

так что вот ответ, инициализируя стек в main()

Stack items; 
init(items);