《数据结构实验与实训教程(第4版)》程序代码(6)
int q_h=0, q_t=0; /* 初始化队首,队尾指针为0 */ int op, i;
while( 1 ) { printf( \请选择操作,1:进队 2:出队 0:退出 \ fflush( stdin ); /* 清空标准输入缓冲区 */ scanf( \
switch( op ) {
case 0: /* 退出 */ return; case 1: /* 进队 */ printf( \请输入进队元素:\ scanf( \ if( 1 != 0 ) printf( \队列满\\n\ else {
printf( \入队成功, 队内元素为:\\n\ OutputQueue( q, MAXN, q_h, q_t ); } break; case 2: /* 出队 */ if( 2 == 0 ) {/* 出队成功 */ printf( \出队元素为: [%d] , 队内元素为:\\n\
OutputQueue( q, MAXN, q_h, q_t ); } else printf( \队空\\n\
break;
}
}
}
程序5:题5 医务室模拟程序 #include
int treat;
/* 病人处理时间 */
25
}PATIENT;
typedef struct queue { /* 定义队列结构 */ PATIENT data; /* 队列元素类型为int */ struct queue *link; }QUEUE;
void EnQueue( QUEUE **head, QUEUE **tail, PATIENT x ) /* 进队操作 */ { /*编写进队操作子程序*/ }
int DeQueue( QUEUE **head, QUEUE **tail, PATIENT *cp ) /* 出队操作 1:对空 */ {
/*编写出队操作子程序*/ }
void OutputQueue( QUEUE *head ) /* 输出队列中元素 */ { while( 1 ) { printf( \到达时间: [%d] 处理时间: [%d]\\n \head->data.arrive,
head->data.treat ); head = head->link; } }
void InitData( PATIENT *pa, int n ) /* 生成病人到达及处理时间的随机数列 */ {
int parr = 0; /* 前一个病人到达的时间 */ int i; for( i = 0; i < n; i++ ) { pa[i].arrive = parr + random( 15 ); /* 假设病人到达的时间间隔为 0~14 */ pa[i].treat = random( 9 ) + 1; /* 假设医生处理时间为 1~9 */ parr = pa[i].arrive;
printf( \第[%d]个病人到达时间为[%d]处理时间为[%d]\\n\ } }
void main()
26
{ QUEUE *head, *tail; PATIENT *p, curr; /* 病人到达及处理时间信息, 当前出队病人信息 */ int n, i, finish; int nowtime; /* 时钟 */ int dwait, pwait; /* 医生累计等待时间, 病人累计等待时间 */ head = tail = NULL; while( 1 ) {
/* 将队列头和尾置为空 */
n = 0;
nowtime = dwait = pwait = 0; printf( \请输入病人总数(1~20),= 0:退出 \ scanf( \ if( n == 0 ) /* 退出 */ return; if( n > 20 || n < 0 ) continue;
if( ( p = ( PATIENT *)malloc( n * sizeof( PATIENT ) ) ) == 2 ) { printf( \内存申请错误\\n\ return;
} 3 /* 生成病人到达及处理时间的随机数列 */ for( i = 0; 4 ; ) {/* 病人到达未结束或还有等待, 处理 */ if( head == NULL ) { /* 等待队列为空 */
if(p[i].arrive - nowtime > 0)/* 病人到达时间与上次处理时间迟 */ 5 /* 累计医生等待时间 */ nowtime = p[i].arrive; /* 时钟推进 */ 6 /* 病人入队 */
}
DeQueue( &head, &tail, &curr ); /* 出队一位病人 */ 7 /* 累计病人等待时间 */ finish = nowtime + curr.treat; /* 当前病人处理结束时间 */ while( i < n && p[i].arrive <= finish ) /* 下一位病人到达时间在当前病人等待时间结束之前, 入队 */ 8 nowtime = finish; /* 时钟推进到当前病人处理结束时间 */
}
free( p ); /* 释放空间 */ printf( \医生等待时间[%d], 病人平均等待时间[%.2f]\\n\dwait, (float)pwait/n );
27
}
}
程序6:题6 招聘程序 #include
#include #define DEMARK 5 /* 按第二批录用的扣分成绩 */ typedef struct stu { /* 定义招聘人员信息结构 */
int no, total, z[2], sortm, zi; /* 编号, 总成绩, 志愿, 排除成绩, 录取志愿号 */ struct stu *next; }STU;
typedef struct job{ int lmt, count; /* 计划录用人数, 已录用人数 */ STU *stu; /* 录用者有序队列 */ }JOB;
STU *head=NULL, *over=NULL;
int all;
void OutPutStu( STU *p ) /* 输出应聘人员有序队列中编号和成绩 */ { for( ; 1 ; p = p->next ) printf( \}
void FreeStu( STU **p ) { STU *q; while( *p != NULL ) { q = *p; 2 free( q ); }
}
void Insert( STU **p, STU *u ) {
/* 释放应聘人员空间 */
/* 按排除成绩从大到小顺序插队 */
STU *v, *q; /* 插队元素的前后元素指针 */ for( q = *p; q != NULL; v = q, q = q->next ) if( 3 ) /* 队中工人成绩<插入元素成绩 */ break;
28
if( q == *p ) /* 插入到队首 */ *p = u; else /* 不为队首插入 */ 4 u->next = q; /* 新元素的后继元素指针 */ }
int InitJob( JOB **h, int n, int *all ) /* 随机生成工种信息 */
{
int i;
JOB *p; *all = 0;
printf( \工种信息{工种号(计划招聘人数)}\\n\ if( ( p = ( JOB * )malloc( n * sizeof( JOB ) ) ) == NULL ) { printf( \内存申请错误!\\n\ return -1; } for( i = 0; i < n; i++ ) { p[i].lmt = random( 10 ) + 1; /* 假设工种招聘人数为 1~10 */ p[i].count = 0; p[i].stu = NULL; *all += p[i].lmt;
printf( \ } printf( \总招聘人数[%d]\\n\ *h = p;
return 0; }
int InitStu( STU **h, int n, int m ) /* 随机生成应聘人员信息 */ { STU *p; int i;
printf( \应聘人员信息{编号, 成绩, 志愿1, 志愿2}\\n\ for( i = 0; i < n; i++ ) { if( ( p = ( STU * )malloc( sizeof( STU ) ) ) == NULL ) { printf( \内存申请错误!\\n\ return -1; } p->no = i;
29
…… 此处隐藏:1340字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [资格考试]机械振动与噪声学部分答案
- [资格考试]空调工程课后思考题部分整合版
- [资格考试]电信登高模拟试题
- [资格考试]2018年上海市徐汇区中考物理二模试卷(
- [资格考试]坐标转换及方里网的相关问题(椭球体、
- [资格考试]语文教研组活动记录表
- [资格考试]广东省2006年高应变考试试题
- [资格考试]LTE学习总结—后台操作-数据配置步骤很
- [资格考试]北京市医疗美容主诊医师和外籍整形外科
- [资格考试]中学生广播稿400字3篇
- [资格考试]CL800双模站点CDMA主分集RSSI差异过大
- [资格考试]泵与泵站考试复习题
- [资格考试]4个万能和弦搞定尤克里里即兴弹唱(入
- [资格考试]咽喉与经络的关系
- [资格考试]《云南省国家通用语言文字条例》学习心
- [资格考试]标准化第三范式
- [资格考试]GB-50016-2014-建筑设计防火规范2018修
- [资格考试]五年级上册品社复习资料(第二单元)
- [资格考试]2.对XX公司领导班子和班子成员意见建议
- [资格考试]关于市区违法建设情况的调研报告
- 二0一五年下半年经营管理目标考核方案
- 2014年春八年级英语下第三次月考
- 北师大版语文二年级上册第十五单元《松
- 2016国网江苏省电力公司招聘高校毕业生
- 多渠道促家长督导家长共育和谐 - 图文
- 2018 - 2019学年高中数学第2章圆锥曲线
- 竞争比合作更重要( - 辩论准备稿)课
- “案例积淀式”校本研训的实践与探索
- 新闻必须客观vs新闻不必客观一辩稿
- 福师大作业 比较视野下的外国文学
- 新编大学英语第二册1-7单元课文翻译及
- 年产13万吨天然气蛋白项目可行性研究报
- 河南省洛阳市2018届高三第二次统一考试
- 地下车库建筑设计探讨
- 南京大学应用学科教授研究方向汇编
- 2018年八年级物理全册 第6章 第4节 来
- 毕业论文-浅析余华小说的悲悯性 - 以《
- 2019年整理乡镇城乡环境综合治理工作总
- 广西民族大学留学生招生简章越南语版本
- 故宫旧称紫禁城简介




