数据结构第一次实验

news/2024/5/20 1:25:32

删除进程未完成

代码:

#include "stdio.h"
#include <stdlib.h>
#include <conio.h>
#define getpch(type) (type*)malloc(sizeof(type))
#define NULL 0// ¶¨Òå½ø³Ì¿ØÖÆ¿éPCB
struct pcb{// ½ø³ÌÃû×Ö char name[10];// ½ø³ÌÊÇ·ñÔËÐÐ char state;// ½ø³ÌÓÅÏȼ¶Êý int super;int ntime;int rtime;// ÏÂÒ»¸ö½ø³Ì struct pcb* link;
}*ready=NULL,*p,*res;typedef struct pcb PCB;// ½¨Á¢¶Ô½ø³Ì½øÐÐÓÅÏȼ¶ÅÅÁк¯Êý
//void sort(){
//	int l=0;
//	PCB* pr=ready; 
//	while(pr!=NULL){
//		l++;
//		pr=pr->link; 
//	}
//	pr=p;
//	printf("l: %d\n",l);
//}// ·µ»Ø¾ÍÐ÷¶ÓÁеij¤¶È 
int space(){int l=0;PCB* pr=ready;while(pr!=NULL){l++;pr=pr->link;}return(l);
}// °´ÕÕÓÅÏÈÊý½øÐÐÅÅÐò ¿ÉÇÀÕ¼
//void sort(){
//	int len=space();
//	if(len==1){
//		if(ready->super>p->super){
//			p->link=ready;
//			ready=p;
//		}else{
//			ready->link=p;
//		}
//	}
//	else if(len>1){
//		PCB* pr=ready,*qr=ready->link;
//		while(qr!=NULL){
//			if(qr->super>p->super){
//				pr->link=p;
//				p->link=qr;
//				break;
//			}
//			pr=qr;
//			qr=qr->link;
//		}
//		qr=p;
//	}
//	else{
//		ready=p;
//	}
//}
void sort(){int len=space();if(len==1){if(ready->super>p->super){p->link=ready;ready=p;}else{ready->link=p;}}else if(len>1){PCB* pr=ready,*qr=ready->link;while(qr!=NULL){
//			printf("&&&&&&&&&&&&&&&&&&&&&&\n");if(qr->super>p->super){pr->link=p;p->link=qr;break;}pr=pr->link;qr=qr->link;}pr->link=p;}else{ready=p;}// È¥µôÔËÐÐÍêµÄ
//	res=NULL;
//	PCB *rpr=res,*pr=ready,*pp;
//	while(pr!=NULL){
//		if(pr->state=='w'){printf("&&&&&&&&&&&&&&&&&&&&&&\n");
//			pp=pr;
//			pp->link=NULL;
//			rpr=pp;
//			rpr=rpr->link;
//		}
//		pr=pr->link;
//	}
//	ready=res;PCB *pr=ready,*qr;while(pr->state!='w')pr=pr->link;ready=pr;qr=ready->link;while(qr!=NULL){if(qr->state=='w'){pr=qr;pr=pr->link;pr=NULL;}qr=qr->link;}printf("sort-len: %d\n",space());
}// ÕâÑùºÃÏñ¸ü¼òµ¥ 
//void sort(){
//	int len=space();
//	PCB *res=NULL,*rpr=res,*pr=ready;
//	if(len){
//		while(pr!=NULL||p!=NULL){
//			if(pr->state=='R'){
//				if(pr!=NULL&&p!=NULL){
//					if(pr->super>p->super){
//						rpr=p;
//						rpr=rpr->link;
//						p=NULL;
//					}else{
//						rpr=pr;
//						rpr=rpr->link;
//						pr=pr->link;
//					}
//				}else if(pr!=NULL&&p==NULL){
//					rpr=pr;
//					rpr=rpr->link;
//					pr=pr->link;
//				}else{
//					rpr=p;
//					rpr=rpr->link;
//					p=NULL;
//				}
//			}else{
//				pr=pr->link;
//			}
//		}
//	}
//	else{
//		res=p;
//	}
//	ready=res;
//}// ½¨Á¢½ø³Ì¿ØÖƿ麯Êý
void input() { int i,num;printf("\n ÇëÊäÈë½ø³ÌÊýÁ¿?");scanf("%d",&num);for(i=0;i<num;i++){printf("\n ½ø³ÌºÅNo.%d:\n",i);p=getpch(PCB);printf("\n ÊäÈë½ø³ÌÃû:");scanf("%s",p->name);printf("\n ÊäÈë½ø³ÌÓÅÏÈÊý:");scanf("%d",&p->super);printf("\n ÊäÈë½ø³ÌÔËÐÐʱ¼ä:");scanf("%d",&p->ntime);printf("\n");p->rtime=0;p->state='w';p->link=NULL;sort();} 
}// ½¨Á¢½ø³ÌÏÔʾº¯Êý,ÓÃÓÚÏÔʾµ±Ç°½ø³Ì
void disp(PCB * pr){printf("\n qname \t state \t super \t ndtime \t runtime \n");printf("|%s\t",pr->name);printf("|%c\t",pr->state);printf("|%d\t",pr->super);printf("|%d\t",pr->ntime);printf("|%d\t",pr->rtime);printf("\n");
}// ½¨Á¢½ø³Ì²é¿´º¯Êý
void check(){PCB* pr;//ÏÔʾµ±Ç°ÔËÐнø³Ìprintf("\n **** µ±Ç°ÕýÔÚÔËÐеĽø³ÌÊÇ:%s",p->name);disp(p);pr=ready;//ÏÔʾ¾ÍÐ÷¶ÓÁÐ״̬printf("\n ****µ±Ç°¾ÍÐ÷¶ÓÁÐ״̬Ϊ:\n");while(pr!=NULL){disp(pr);pr=pr->link; } 
} // ½¨Á¢½ø³Ì³·Ïûº¯Êý(½ø³ÌÔËÐнáÊø,³·Ïû½ø³Ì)
void destroy(){printf("\n ½ø³Ì [%s] ÒÑÍê³É.\n",p->name);free(p);
}// ½¨Á¢½ø³Ì¾ÍÐ÷º¯Êý(½ø³ÌÔËÐÐʱ¼äµ½,ÖþÍÐ÷״̬
void running(){(p->rtime)++;// µ÷ÓÃdestroyº¯Êýif(p->rtime==p->ntime)destroy();else{(p->super)--;p->state='w';// µ÷ÓÃsortº¯Êýsort();} 
} int main(){int len,h=0;char ch;input();len=space();//	printf("len: %d\n",len);while((len!=0)&&(ready!=NULL)){ch=getchar();h++;printf("\n The execute number:%d \n",h);p=ready;ready=p->link;p->link=NULL;p->state='R';check();running();printf("\n °´ÈÎÒ»¼ü¼ÌÐø......");ch=getchar();}printf("\n\n ½ø³ÌÒѾ­Íê³É.\n"); ch=getchar();return 0;
}/*2
000
0
1
111
1
25
000
0
1
111
1
2
222
2
3
333
3
4
444
4
5*/


http://www.mrgr.cn/p/35870628

相关文章

JAVA IO/NIO 知识点总结

一、常见 IO 模型简介 1. 阻塞IO模型 最传统的一种IO模型&#xff0c;即在读写数据过程中会发生阻塞现象。当用户线程发出IO请求之后&#xff0c;内核会去查看数据是否就绪&#xff0c;如果没有就绪就会等待数据就绪&#xff0c;而用户线程就会处于阻塞状态&#xff0c;用户线…

和comate一起,用JavaScript实现一个简易版五子棋小游戏

前言 五子棋起源于中国&#xff0c;是全国智力运动会竞技项目之一&#xff0c;是一种两人对弈的纯策略型棋类游戏。双方分别使用黑白两色的棋子&#xff0c;下在棋盘直线与横线的交叉点上&#xff0c;先形成五子连珠者获胜。 这次和Baidu Comate智能代码助手共同完成这个小游戏…

9.3.k8s的控制器资源(deployment部署控制器)

目录 一、deployment部署控制器概念 二、deployment资源的清单编写 三、小结 功能 使用场景 原理 四、deployment实现升级和回滚 1.编辑deployment资源清单&#xff08;v1版本&#xff09; 2.创建service资源用于访问 ​编辑 3.修改deploy清单中pod镜像版本为V2 4…

如何分析慢SQL语句

如果一条sql执行很慢的话,通常会使用MySQL自动的执行计划explain来去查看这条sql的执行情况,比如在这里面可以通过key和key_len检查是否命中了索引,如果本身已经添加了索引,也可以判断索引是否有失效的情况,第二个,可以通过type字段查看sql是否有进一步的优化空间,是否存…

sonarqube(一)安装

一、前置条件: 安装工具如下:JDK MySql服务器 SonarQube SonarScanner二、下载和安装 1.jdk和mysql和sonar有版本对应的要求,sonar7.5对应jdk1.8和mysql>=5.6,<8.0 下载地址:http://www.sonarqube.org/downloads/ 下载完成后解压后点击StartSonar.bat启动即可。 或者…

shell翻译官

shell脚本概述 shell的作用&#xff1a; 完成自动化运维工作&#xff0c;批量完成重复操作&#xff0c;结合crontab完成周期性任务 shell编程规范&#xff1a; Shell脚本的编写 vim XXX.sh 1.申明解释器 #!/bin/bash #!/bin/python 2.编写注释信息 要以 # 号开…

Verilog中4位数值比较器电路

某4位数值比较器的功能表如下。 请用Verilog语言采用门级描述方式&#xff0c;实现此4位数值比较器 参考代码如下&#xff1a; &#xff08;CSDN代码块不支持Verilog&#xff0c;代码复制到notepad编辑器中&#xff0c;语言选择Verilog&#xff0c;看得更清楚&#xff09; t…

项目计划书(Word原件)

项目开发计划包括项目描述、项目组织、成本预算、人力资源估算、设备资源计划、沟通计划、采购计划、风险计划、项目过程定义及项目的进度安排和里程碑、质量计划、数据管理计划、度量和分析计划、监控计划和培训计划等。 软件资料清单列表部分文档&#xff1a; 工作安排任务书…

《Python编程从入门到实践》day21

# 昨日知识点回顾 设置背景颜色 在屏幕中央绘制飞船 # 今日知识点学习 12.5 重构&#xff1a;方法_check_events()和_update_screen() 12.5.1 方法_check_events() import sys import pygame from Settings import Settings from Ship import Shipclass AlienInvasion:"…

java的三种编译(JAVAC,JIT,AOT)

1.javac把java代码编译成字节码(中间代码),然后由java虚拟机解释执行 2.jit(运行时编译)把java代码直接编译成机器码,然后由java虚拟机直接运行(缓存)。有对客户端的C1和对服务器端的C2编译器 缓存 代码优化 逃逸分析,是否超出范围。对不同逃逸状态做优化 全局逃逸 对象超…

怎么设置一天多个时间点的闹钟提醒?

在日常生活中,我们经常需要在一天的不同时间点完成特定的任务,如定时喝水、定时查看后台数据、定时吃药等。这时候,如果能有一款软件,可以在一条日程里轻松设置多个时间点的闹钟提醒,那将大大提高我们的工作效率和生活品质。 那么怎么设置一天多个时间点的闹钟提醒呢?定时…

sql优化思路

sql的优化经验 这里解释一下SQL语句的优化的原理 1.指明字段名称&#xff0c;可以尽量使用覆盖索引&#xff0c;避免回表查询&#xff0c;因此可以提高效率 2.字面意思&#xff0c;无需过多赘述。索引就是为了提高查询效率的。 3.图中两条sql直接可以使用union all 或者 uni…

智慧工地,筑牢安全防线:严防塔吊相撞,守护施工安全之巅!

塔吊相撞的事故是一个严重的施工安全问题&#xff0c;而智慧工地则是一种利用现代科技手段提高施工安全性的解决方案。 为了避免类似事故的发生&#xff0c;智慧工地可以采取以下措施&#xff1a; 一、建立全面的监控系统 智慧工地可以建立完善的监控系统&#xff0c;通过安装…

GreatSQL的sp中添加新的sp_instr引入的bug解析

GreatSQL的sp中添加新的sp_instr引入的bug解析 一、问题发现 在一次开发中用到的sp需要添加新的sp_instr以满足需求,但是添加了数个sp_instr以后发现执行新的sp会发生core。注:本次使用的GreatSQL 8.0.32-251、sp_head.cc的init_sp_psi_keys()代码里面添加10个新的sp_instr:…

使用脚本一键部署项目的示例(脚本会创建syetemctl的系统服务)

文章目录 说明使用脚本一键部署本项目开启/停止服务开启/关闭开机自动运行更新项目 参考地址&#xff1a;https://github.com/Evil0ctal/Douyin_TikTok_Download_API?tabreadme-ov-file 说明 后续相关项目可以使用这种方式创建脚本&#xff0c;脚本均放置在项目根目录下的bas…

对于习惯使用ftp传输的企业,如何寻找最佳的替代方案?

FTP协议广泛应用各行业的文件传输场景中,对于很多企业而言,由于FTP传输应用获取门槛低、使用普遍,因此,有较为稳定的FTP使用习惯,但即便如此,也不得不面对,FTP应用存在着严重缺陷: 传输效率问题:FTP协议作为最早的互联网文件传输协议,虽然解决了传输协议有无的问题,…

Keil编译后的Code,RO,RW,ZI等相关

在使用keil开发STM32应用程序时,点击Build后在Build Output窗口中经常会有如下信息:以前一直好奇这几个参数和实际使用的STM32芯片中Flash和SRAM的对应关系,于是上网搜了一圈,做如下总结:这些参数的单位是Byte 图中几个参数分别代表 Code:代码的大小 RO:常量所占空间(加…

探索1688、淘宝、京东搜索商品聚合API接口:一站式电商搜索解决方案

随着电商行业的不断发展&#xff0c;电商平台的数量和商品种类都在快速增长。商家和开发者在运营过程中&#xff0c;需要经常进行跨平台的商品搜索和数据分析。然而&#xff0c;由于各个电商平台的数据接口存在差异&#xff0c;直接对接多个平台不仅效率低下&#xff0c;而且维…

docker搭建代码审计平台sonarqube

docker搭建代码审计平台sonarqube 一、代码审计关注的质量指标二、静态分析技术分类三、sonarqube流程四、快速搭建sonarqube五、sonarqube scanner的安装和使用 一、代码审计关注的质量指标 代码坏味道 代码规范技术债评估 bug和漏洞代码重复度单测与集成 测试用例数量覆盖率…

定时任务的几种实现方式

定时任务实现的几种方式&#xff1a; 1、JDK自带 &#xff08;1&#xff09;Timer&#xff1a;这是java自带的java.util.Timer类&#xff0c;这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行&#xff0c;但不能在指定时间运行。…