/*
*
*/
static const int nLength = 5;
static int deque[nLength];
static int nIdxHead = 0;
static int nIdxTail = 0;
enum Err
{
NoErr,
errOverFlow,
errUnderFlow,
};
//
Err EnDequeHead(int x)
{
if (((nIdxHead + nLength - 1) % nLength) == nIdxTail)
return errOverFlow;
nIdxHead = ((nIdxHead + nLength - 1) % nLength);
deque[nIdxHead] = x;
return NoErr;
}
//
Err DeDequeHead(int *pX)
{
if (nIdxHead == nIdxTail)
return errUnderFlow;
if (NULL != pX)
*pX = deque[nIdxHead];
nIdxHead = (nIdxHead + 1) % nLength;
return NoErr;
}
//
Err EnDequeTail(int x)
{
if (((nIdxTail + 1) % nLength) == nIdxHead)
return errOverFlow;
deque[nIdxTail] = x;
nIdxTail = ((nIdxTail + 1) % nLength);
return NoErr;
}
//
Err DeDequeTail(int *pX)
{
if (nIdxHead == nIdxTail)
return errUnderFlow;
nIdxTail = (nIdxTail + nLength - 1) % nLength;
if (NULL != pX)
*pX = deque[nIdxTail];
return NoErr;
}