//队列(Queue)是具有一定操作约束的线性表
//只能在一端插入,一端删除 ,先进先出,后进后出
//队列的链式存储用一个单链表实现
#include <stdio.h>
#include <malloc.h>
#define MaxSize <存储数据元素的最大个数>
//队列(Queue)是具有一定操作约束的线性表
//只能在一端插入,一端删除 ,先进先出,后进后出
//队列的链式存储用一个单链表实现
//存储信息的结点
struct Node{
ElementType Data;
struct Node *Next;
};
//链队列结构
struct QNode{
struct Node *front;//指向队头结点
struct Node *rear;//指向队尾结点
};
typedef struct QNode *Queue;
Queue PtrQ;
//不带头结点的链式队列出队操作,front直接指向头结点
ElementType DeleteQ(Queue PtrQ)
{
struct Node *FrontCell;
ElementType FrontElem;
if(PtrQ->front==NULL){
printf("队列空");
return ERROR;//ERROR是一个错误标志,自己定
}
FrontCell=PtrQ->front;
if(PtrQ->front==PtrQ->rear)//队列只有一个元素
{
PtrQ->front=PtrQ->rear=NULL;
}else{
PtrQ->front=PtrQ->front->Next;
}
FrontElem=FrontCell->Data;
free(FrontCell);
return FrontElem;
}