Originally Posted by
akaile
Code:
int MyQueue::get()
{
if ( empty() == false ) //queue not empty
{
top--;
return IArr[top1++]; //input result queue
}
else
cout << " Queue empty "; //queue rong
}
main()
Code:
MyQueue Q;
Q.put(1); //Queue contains 1
Q.put(2); //Queue contains 1 2
cout << Q.get(); //Prints 1, queue contains 2 3
cout << Q.get(); //Prints 2, queue contains 3
cout << Q.get(); //Prints Queue empty
Cosole: 12 Queu empty and 7624652????
I want output: 12 Queue empty.
Your function is returning an int, and since you don't have a return for all paths, it spits out garbage.
Code:
int MyQueue::get()
{
if ( empty() == false ) //queue not empty
{
top--;
return IArr[top1++]; //input result queue
}
else
{
cout << " Queue empty "; //queue rong
//If you don't have a return here, then the function returns a value on it's own.
}
}
What I would do, is instead have get() return a bool, and pass a parameter by reference which would be where you get your value from. Such as:
Code:
bool MyQueue::get(int &nRef)
{
if ( empty() == false ) //queue not empty
{
top--;
nRef = IArr[top1++]; //input result queue
return(true); //There was something here
}
else
{
cout << " Queue empty "; //queue rong
return(false);
}
}
Code:
MyQueue Q;
Q.put(1); //Queue contains 1
Q.put(2); //Queue contains 1 2
int nTemp(0);
while(Q.get(nTemp) ) //While Q is not empty...
{
cout << nTemp;
}