📄 queue.cpp
字号:
typedef int QElemType;
#include "queue.h"
Status InitQueue(LinkQueue &Q)
{//初始化队列;
Q.front = Q.rear =(QueuePtr) malloc(sizeof(QNode));
if(!Q.front) exit(-1);
Q.front->next=NULL;
return OK;
}
Status DestroyQueue(LinkQueue &Q)
{//销毁队列
while(Q.front)
{
Q.rear=Q.front->next;
free(Q.front );
Q.front = Q.rear ;
}
return OK;
}
Status ClearQueue(LinkQueue &Q)
{//清除队列中的元素
QueuePtr p,q;
Q.rear = Q.front ;
p=Q.front ->next;
Q.front->next=NULL;
while(p)
{
q=p;
p=p->next;
free(q);
}
return OK;
}
Status QueueEmpty(LinkQueue Q)
{//判断队列是否为空;
if(Q.front == Q.rear ) return TRUE;
return FALSE;
}
int QueueLength(LinkQueue Q)
{// 求队列的长度
int i=0;
QueuePtr p;
p=Q.front;
while(p!=Q.rear)
{
i++;
p=p->next;
}
return i;
}
Status GetHead(LinkQueue Q,QElemType &e)
{// 若队列不空,则用e返回Q的队头元素,并返回OK,否则返回ERROR.
QueuePtr p;
if(Q.front == Q.rear )
return ERROR;
p=Q.front ->next ;
e=p->data;
return OK;
}
Status EnQueue(LinkQueue &Q,QElemType e)
{//把元素插入到队列中
QueuePtr 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;
}
Status DeQueue(LinkQueue &Q,QElemType &e)
{//若队列不空,用e返回队头元素的值,否则返回ERROR;
QueuePtr 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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -