📄 lqueu.h
字号:
/***********************队列,置队空、入队和出队********2008.2.6*********************/
#include<stdio.h>
#include<process.h>
#include<malloc.h>
/******************************状态代码*********************************/
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define STACK_INIT_SIZE 10
#define STACKINCREMENT 2
/*******************链式存储结构***************************/
typedef int Status;
typedef int QElemType;
typedef struct QNode
{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front,rear;
}LinkQueue;
/****************************************************/
/*****************基本操作函数***********************/
/*********构造空队*******/
Status InitQueue(LinkQueue *Q)
{
(*Q).front=(*Q).rear=(QueuePtr)malloc(sizeof(QNode));
if(!(*Q).front)
exit(OVERFLOW);
(*Q).front->next=NULL;
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;
}
/**********队列长度********/
int QueueLength(LinkQueue Q)
{
int i=0;
QueuePtr p;
p=Q.front;
while(Q.rear!=p)
{
i++;
p=p->next;
}
return i;
}
/*********销毁队列********/
Status DestroyQueue(LinkQueue *Q)
{
QueuePtr p;
int k=QueueLength(*Q);
while(k--)
{
p=(*Q).rear->next;
free((*Q).rear);
(*Q).rear=p;
}
return OK;
}
/**********查看队尾元素********/
Status GetRear(LinkQueue Q,QElemType *e)
{
if(Q.front==Q.rear)
return ERROR;
*e=Q.rear->data;
return OK;
}
/**********元素入队********/
Status EnQueue(LinkQueue *Q,QElemType e)
{
QueuePtr p=(QueuePtr)malloc(sizeof(QNode));
if(!p)
exit(OVERFLOW);
p->data=e;
p->next=NULL;
(*Q).rear->next=p;
(*Q).rear=p;
(*Q).rear->next=(*Q).front;
return OK;
}
/**********元素出队********/
Status DeQueue(LinkQueue *Q,QElemType *e)
{
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;
}
/******访问函数********/
Status QueueTraverse(LinkQueue Q)
{
QueuePtr p;
int k=0;
k=QueueLength(Q);
p=Q.front->next;
while(k)
{
printf("%d ",p->data);//visit();//
p=p->next;
k--;
}
printf("\n");
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -