#include<>
//#include<>
#include<>
typedef int ElemType;
typedef struct queueNode/*链式队列结点的类型定义*/
{
ElemType data; /*数据域*/
struct queueNode *next; /*指针域*/
}QueueNode;
typedef struct //链式队列的类型定义
{
QueueNode *front; //队头指针
QueueNode *rear; //队尾指针
}LinkQueue;
//链式队列的初始化
void QueueInitial(LinkQueue *pQ)
{//指针pQ所指向的链式队列初始化为有表头结点链表
pQ->front=(QueueNode *)malloc(sizeof(QueueNode));
if(pQ->front==NULL)
{
printf("内存分配失败!\n");
exit(1);
}
pQ->rear=pQ->front;
pQ->front->next=NULL; //头结点指针域置空
}
//链式队列判空
int IsEmpty(LinkQueue *pQ)
{//链队为空时返回1,否则返回0
return pQ->front==pQ->rear;
}
//元素进队
void EnQueue(LinkQueue *pQ,ElemType e)
{//将元素e插入到队尾
QueueNode *p;
p=(QueueNode *)malloc(sizeof(QueueNode));
if(p==NULL) //内存分配失败
{
printf("内存分配失败!\n");
exit(1);
}
p->data=e;
p->next=NULL; //设置为尾结点
pQ->rear->next=p; //尾部插入
pQ->rear=p; //尾指针后移
}
//元素出队
ElemType DeQueue(LinkQueue *pQ)
{//若队列元素不为空,则删除队头元素,并返回它的值
QueueNode *first;
ElemType temp;
if(IsEmpty(pQ)) //队列为空,退出
{
printf("空对!\n");
exit(1);
}
first=pQ->front->next; //first指向队列头结点
temp=first->data; //暂存队头元素值
pQ->front->next=first->next; // 摘下队头结点
if(pQ->rear==first) //只有一个结点时,修改尾指针
pQ->rear=pQ->front;
free(first);
return temp;
}
//依次输出所有元素
void Output(LinkQueue *pQ)
{//依次输出队列中的所有元素
printf("从队首到对尾列出所有排队病人的病历号依次为:\n");
QueueNode *p=p
c程序病人排队看病 来自淘豆网www.taodocs.com转载请标明出处.