/** * 双端队列,使用双向链表实现 * 队头、队尾都可以进行入队、出队操作的队列 * 双端队列的每一端都是一个栈,都符合栈先进后出的特性 * 双端队列是一种多功能的数据结构,可以使用它来提供队列和栈两种功能 */ #include <stdlib.h> #include "queue.h"
typedef struct DoubleLinkNode{ DoubleLinkNode*prev; DoubleLinkNode*next; int data; }DoubleLinkNode; typedef struct DoubleEndsQueue{ DoubleLinkNode*front; DoubleLinkNode*rear; }DoubleEndsQueue;
void InitDoubleQueue(DoubleEndsQueue *dq){ if (dq==NULL) { dq = (DoubleEndsQueue*)malloc(sizeof(DoubleEndsQueue)); } dq->front =NULL; dq->rear = NULL; } bool IsDoubleQueueEmpty(DoubleEndsQueue *dq){ if (dq==NULL) { return true; } if (dq->rear==dq->front) { return true; } return false; } int DoubleQueueLength(DoubleEndsQueue *dq){ if (dq==NULL) { return -1; } if (dq->front==NULL||dq->rear&#