Monday, January 5, 2009

Implementing Queue using one Stack.

class Stack
{
private:
int ar[10];
int top;
public:
Stack():top(-1){}
void Push(int i)
{
if(top <= 10)
{
ar[++top] = i;
}
}
int Pop()
{
if( !IsEmpty())
return ar[top--];
else
return -1;
}
bool IsEmpty()
{
if( top <= -1)
return true;
return false;
}
};

class Queue
{
private:
Stack st;
public:
void Enqueue(int i)
{
st.Push(i);
}
int Dequeue()
{
int iVal = st.Pop();
if(st.IsEmpty())
return iVal;
else
{
int ret = Dequeue();
st.Push(iVal);
return ret;
}
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Queue q;
q.Enqueue(10);
q.Enqueue(20);
q.Enqueue(30);
int i = q.Dequeue();
i = q.Dequeue();
i = q.Dequeue();
return 0;
}

No comments: