数据结构,队列的实现及应用,部分已给

1.循环队列的实现(CirQueue.h)
typedef struct
{ QElemType *base;
int front, rear;
int queueSize;
}CirQueue; //循环队列类型

Status InitCirQueue(CirQueue &Q, int QSize) //初始化,构造空间大小为QSize的初始空队列Q
{ Q.base=(QElemType )malloc(QSizesizeof(QElemType))
if(!Q.base) return OVERFLOW;
Q.queueSize=QSize;
Q.front=Q.rear=0;
return OK;//实现代码
}
Status queueIsEmpty(CirQueue Q) //判空
{ if(Q.front==Q.rear) return TRUE;
else return FALSE;//实现代码
}
void clearQueue(CirQueue &Q) //清空
{ Q.front=Q.rear=0;//实现代码
}
Status insertQueue(CirQueue &Q, QElemType e) //入队
{ if((Q.rear+1)%Q.queueSize==Q.front) return OVERFLOW;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%Q.queueSize;
return OK;//实现代码
}
Status deleteQueue(CirQueue &Q, QElemType &e) //出队
{ if(Q.front==Q.rear) return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%Q.queueSize;
return OK;//实现代码
}
Status getFront(CirQueue Q, QElemType &e) //取队头元素
{ if(Q.front==Q.rear) return ERROR;
e=Q.base[Q.front];
return OK;//实现代码
}
int queueLength(CirQueue Q) //求队长
{ return(Q.rear-Q.front+q.queueSize)%Q.queueSize;//实现代码
}
2.随机任务排队问题
【分析】
任务类型定义
typedef struct
{ int ord; //任务号
int comeTime; //任务产生时间
int startTime; //任务开始时间
int finishTime; //任务完成时间
int ducTime; //任务时长
} task; //任务类型

问题求解过程
问题求解的基本过程与思路如图1所示。
图1 问题求解过程

img

随机数的生成
设置随机种子
srand((unsigned)time(NULL));
生成随机任务时长(1~10分钟)
rand() % 10 + 1
相关头文件
stdlib.h: rand()和srand()所在头文件; time.h:time()所在头文件。
平均每5分产生一个新任务
每1分钟(即每循环一次)由系统随机确定是否产生新任务,示例如下:
int flag = rand() % 5;
if( flag==2 ) //flag为2的概率为1/5
{ 产生新任务;
}
每循环一次的时间处理
以休眠250毫秒,替代一分钟。代码示例如下:
curTime = 0;
while( 1 )
{ ……
curTime+=1; //时间加1分钟
Sleep(250); //程序休眠250ms,替代一分钟,该函数所在头文件“windows.h”
……
if(工作完成——下班)break;
}

(1)程序代码(代码结构示例)
#include
#include
#include
#include

typedef struct
{ int ord; //任务号
int comeTime; //任务产生时间
int startTime; //任务开始时间
int finishTime; //任务完成时间
int ducTime; //任务时长
} task; //任务类型

//创建新任务,函数返回该任务
task createTask(int taskOrd, int cur_time)
{ //新任务:
//任务号为taskOrd
//产生时间为cur_time
//任务时长为1~10随机值

//显示任务的具体信息void displayTask(task t)
{ //实现代码
}

#include "Status.h"
typedef task QElemType;
#include "CirQueue.h"

//问题求解主程序,过程如图1所示int main()
{
return 0;
}

这是揍嘛?😅