deque 即双端队列
(deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。
结构体定义及初始化
typedef int T;
typedef struct DoubleQuene
{
T data[MAXSIZE];
int front;//头位置
int rear;//尾位置
}*deque;
bool InitQuene(deque q)//初始化
{
if (!q)
return false;
q->front = 0;
q->rear = 0;
return true;
}
相对于循环队列来说,多了相当于头插和尾删的功能。
bool push_back(deque q, T val)//从尾入队
{
if (Is_Full(q))
return false;
q->data[q->rear] = val;
q->rear = (q->rear + 1) % MAXSIZE;
return true;
}
bool push_front(deque q, T val)//从头入队
{
if (Is_Full(q))
return false;
q->front = (q->front + MAXSIZE - 1) % MAXSIZE;
q->data[q->front] = val;
return true;
}
T pop_front(deque q)//从头出队
{
if (Is_Empty(q))
return -1;
T tmp = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return tmp;
}
T pop_back(deque q)