📄 队列int.h
字号:
#include<stdlib.h>
#include<malloc.h>
typedef struct QNode{
int data;
struct QNode *next;
}Qnode,*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
void InitQueue(LinkQueue *Q)
{ /* 构造一个空队列Q */
Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q->front)
exit(0);
Q->front->next=NULL;
}
void DestroyQueue(LinkQueue *Q)
{ /* 销毁队列Q(无论空否均可) */
while(Q->front)
{
Q->rear=Q->front->next;
free(Q->front);
Q->front=Q->rear;
}
}
void ClearQueue(LinkQueue *Q)
{ /* 将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);
}
}
int QueueEmpty(LinkQueue *Q)
{ /* 若Q为空队列,则返回TRUE,否则返回FALSE */
if(Q->front==Q->rear)
return 1;
else
return 0;
}
int QueueLength(LinkQueue *Q)
{ /* 求队列的长度 */
int i=0;
QueuePtr p;
p=Q->front;
while(Q->rear!=p)
{
i++;
p=p->next;
}
return i;
}
void EnQueue(LinkQueue *Q,int e)
{ /* 插入元素e为Q的新的队尾元素 */
QueuePtr p=(QueuePtr)malloc(sizeof(QNode));
if(!p) /* 存储分配失败 */
exit(0);
p->data=e;
p->next=NULL;
Q->rear->next=p;
Q->rear=p;
}
int DeQueue(LinkQueue *Q)
{ /* 若队列不空,删除Q的队头元素,用e返回其值*/
QueuePtr p;int e;
p=Q->front->next;
e=p->data;
Q->front->next=p->next;
if(Q->rear==p)
Q->rear=Q->front;
free(p);
return e;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -