?? 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 + -