⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqqueue.h

📁 本文件是实现队列结构的头文件
💻 H
字号:
/* 此文件为实现链式队列的头文件 */


#define OVERFLOW -1
#define ERROR -2
#define OK 1
#define NULL 0
typedef  int QStatus ;
typedef char QElemType;
typedef struct QNode{
    QElemType data;      /* 队列结点数据 */
    struct QNode  *next;      /* 结点链指针 */
}QNode,*QueuePtr;
typedef struct {
    QueuePtr front;/* 队头指针 */
    QueuePtr rear; /* 队尾指针 */
}SqQueue;

/* 基本操作的函数原型说明 */
/* QStatus InitQueue(SqQueue *Q); 构造一个空队列 */
/* QStatus DestroyQueue(SqQueue *Q); 销毁队列Q,Q不再存在 */
/* QStatus ClearQueue(SqQueue *Q);  将Q清为空队列 */
/* QStatus QueueEmpty(SqQueue *Q);若Q为空队列则返回TRUE,否则返回FALSE */
/* QStatus QueueLength(SqQueue *Q);返回Q的元素个数,即为队列的长度 */
/* QStatus GetHead(SqQueue *Q,QElemType *e); 若队列不为空,用e返回对头元素,并返回OK,否则返回ERROR */
/* QStatus EnQueue(SqQueue *Q,QElemType e);  插入e为新的对尾元素 */
/* QStatus DeQueue(SqQueue *Q,QElemType e);若队列不为空,删除Q的对头元素,用e返回其值并返回OK,否则返回ERROR */
/* QStatus QueueTraverse(SqQueue *Q,visit());从对头到对尾依次对Q中每个元素调用函数visit()一旦visit失败,操作失败 */
/* 基本操作的算法描述 */
QStatus InitQueue(SqQueue *Q)
{
    Q->front=Q->rear=(QueuePtr)malloc(sizeof( QNode));
    if(!Q->front) exit(OVERFLOW); /* 存储分配失败 */
    Q->front->next=NULL;
    return OK;
}
QStatus DestroyQueue(SqQueue *Q)
{
    while(Q->front)
    {
        Q->rear=Q->front->next;
        free(Q->front);
        Q->front=Q->rear;
    }
    return OK;
}
QStatus EnQueue(SqQueue *Q,QElemType e)
{
    QNode *p;
    p=(QueuePtr)malloc(sizeof( QNode));
    if(!p) exit(OVERFLOW);/* 存储分配失败 */
    p->data=e;
    p->next=NULL;
    Q->rear->next=p;
    Q->rear=p;
    return OK;
}
QStatus DeQueue(SqQueue *Q,QElemType *e)
{
    QNode *p;
    if(Q->front==Q->rear) return ERROR;
    p=Q->front->next;
    *e=p->data;
    Q->front->next=p->next;
    if(Q->rear==p) Q->rear=Q->front;
    free(p);
    return OK;
}
QStatus QueueEmpty(SqQueue *Q)
{
    if(Q->front==Q->rear) return OK;
    else
    return NULL;
}
QStatus GetHead(SqQueue *Q,QElemType *e)
{
    if(Q->front==NULL) return ERROR;
    else
    {
        *e=Q->front->data;
        return OK;
    }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -