#include "stdio.h"
#include "stdlib.h"
typedef struct Queuenode//链队列结点的类型
{
char data;
struct Queuenode *next;
}Linknode;
typedef struct //将头尾指针封装在一起的链队列
{
Linknode *front,*rear;
}LinkQueue;
//初始化为空队列
void InitQueue(LinkQueue *Q)
{
Q->front=Q->rear=NULL;
}
//判断队列是否空��
int QueueEmpty(LinkQueue *Q)
{
return Q->front==NULL&&Q->rear==NULL;
}
//进队操作
void EnQueue(LinkQueue *Q,char x)
{ //将元素 x 插入链队列尾部
Linknode *p=(Linknode *)malloc(sizeof(Linknode));//开辟新结点
p->data=x;
p->next=NULL;
if(QueueEmpty(Q))
Q->front=Q->rear=p; //将 x 插入空队列
else
{ //x 插入非空队列的尾
Q->rear->next=p; //p 链到队尾
Q->rear=p; //队尾指针指向 p
}
}
//出队操作��
char DeQueue(LinkQueue *Q)
{
char x;
Linknode *p;
if(QueueEmpty(Q))
printf("Queue underflow");//下溢
p=Q->front; //指向对头结点
评论0
最新资源