The Code is as follows:
# Include <iostream>
Using namespace STD;
Class zstackqueue
{
Public:
Class zstack
{
Public:
Zstack (INT size );
~ Zstack ();
Int POP ();
Void push (int e );
Bool empty () {return Top = 0 ;}
PRIVATE:
Int * s;
Int top;
Int size;
};
Public:
Zstackqueue (int n): S1 (N), S2 (n ){}
Void enqueue (int e );
Int dequeue ();
PRIVATE:
Zstack S1, S2;
};
Zstackqueue: zstack (int n)
: S (0), top (0), size (N)
{
S = new int [size] ();
}
Zstackqueue: zstack ::~ Zstack ()
{
If (s)
{
Delete [] S;
S = 0;
}
Top = 0;
Size = 0;
}
Int zstackqueue: zstack: Pop ()
{
If (top> 0)
Return s [-- top];
Else
Return ~ 0;
}
Void zstackqueue: zstack: Push (int e)
{
If (top <size)
S [top ++] = E;
}
Void zstackqueue: enqueue (int e)
{
S1.push (E );
}
Int zstackqueue: dequeue ()
{
If (! S2.empty ())
{
Return s2.pop ();
}
Else
{
While (! S1.empty ())
S2.push (s1.pop ());
Return s2.pop ();
}
}
Int main ()
{
Zstackqueue Q (3 );
Q. enqueue (5 );
Q. enqueue (2 );
Q. enqueue (8 );
Cout <q. dequeue () <"/t"; // <q. dequeue () <"/t" <q. dequeue () <Endl; // if this is the case, the output result will lead you to think that this is not a stack. Which is a queue! Oh, the reason is that hero knows everything!
Cout <q. dequeue () <"/t ";
Cout <q. dequeue () <"/t ";
Return 0;
}