⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue.h

📁 数据结构
💻 H
字号:
typedef struct{
	int   ArrivalTime;
	int   Duration;
	int   CustomerNum;
	float Cost0;
	float Cost1;
}QElemType;

typedef struct QNode{  //结点类型
 QElemType data;
 struct QNode *next;

}QNode,*QueuePtr;

typedef struct{        //链队列类型
	QueuePtr front;    //队头指针
	QueuePtr rear;     //队尾指针
	int rank;
	
}LinkQueue;

int InitQueue(LinkQueue &Q)
{//构造一个空队列Q
	Q.front=Q.rear=new QNode;
	if(!Q.front) ERRORMESSAGE("OVERFLOW");  //存储分配失败
	Q.front->next=NULL;
	return OK;
}

int QueueEmpty(LinkQueue Q)
{//若队列Q为空队列,则返回TRUE,否则返回FALSE
	if(!Q.front->next) return TRUE;
	return FALSE;
}

int QueueLength(LinkQueue Q)
{//返回Q的元素个数
 int k=0;
 QueuePtr p;
	p=Q.front;
	while(p->next){
		p=p->next;
		++k;
	}
	return k;
}
	

int EnQueue(LinkQueue &Q,QElemType e)
{//插入元素e为Q的新的队尾元素
    QueuePtr p;
	p=new QNode;
	if(!p) ERRORMESSAGE("OVERFLOW");
	p->data=e; p->next=NULL;
	Q.rear->next=p;
	Q.rear=p;
	return OK;
}

int DeQueue(LinkQueue &Q,QElemType &e)
{//若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR
   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;
	delete(p);
	return OK;
}

int QueueTraverse1(LinkQueue Q,int i,QElemType e)
{//输出队列
    QueuePtr p;
	char begin;

	p=Q.front->next;
	if(p==NULL){ 
		 printf("第%d位客人在第%d个理发师处理发完毕,离去!\n",e.CustomerNum,i);
		 printf("实际消费%.2f元(原价为%.2f元),欢迎下次光临!\n",e.Cost1,e.Cost0);
		 
		 printf("\n");
		 printf("\n");
		
		 begin=getchar();
         if(begin!=' ') begin=getchar();
		 
		 return OK;
	}
	
   	else {printf("第%d位客人到来,在第%d个理发师处理发!\n",e.CustomerNum,i);
	     
	      printf("\n");
		  printf("\n");
		  
		  begin=getchar();
          if(begin!=' ') begin=getchar();
		 }
	
	return OK;
	
}

int QueueTraverse2(LinkQueue Q,int i,QElemType e)
{//输出队列
    QueuePtr p;
	char begin;

	p=Q.front->next;
	if(p==NULL){ 
		 printf("第%d位客人从第%d级等待队列中走出,准备理发!\n",e.CustomerNum,i);
		 
		 printf("\n");
		 printf("\n");
		 
		 begin=getchar();
         if(begin!=' ') begin=getchar(); 
		 return OK;
	}
	
   	else {printf("第%d位客人到来,在第%d级队列中等待!\n",e.CustomerNum,i);
         printf("\n");
		 printf("\n");
		
	     begin=getchar();
         if(begin!=' ') begin=getchar();
		 }
	return OK;
	
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -