📄 shiyan.txt
字号:
# define N 10
#define SIZE 100
# define M 10
#include<string>
#include<stdio.h>
#include<stdlib.h>
#include"iostream"
using namespace std;
typedef struct jcb{
char name[4]; //作业名
int length; //作业长度,所需主存大小
int printer; //作业执行所需打印机的数量
int tape; //作业执行所需磁带机的数量
int runtime; //作业估计执行时间
int waittime; //作业在系统中的等待时间
int next; //指向下一个作业控制块的指针
}JCB;
typedef struct pcb
{
char name[4]; //进程名
int status; //进程状态
int runtime; //进程运行时间
float address; //进程在内存中的起始地址
int lenth; //进程长度,也就是占用内存的大小
int ax,bx,cx,dx; //进程现场信息
int pc; //进程现场信息
int psw; //进程现场信息
int next; //下一个进程控制块的位置
}pcbarea;
//初始化
JCB jobtable[N]=
{
{"H",100,100,100,100,100,1}, //为操作方便,加入头节点
{"a",1,1,2,1,6,2},
{"c",3,1,2,2,6,3},
{"b",2,1,2,3,6,4},
{"d",4,1,2,4,6,5},
{"e",5,1,2,5,6,6},
{"f",6,1,2,5,6,7},
{"g",7,1,2,5,6,8},
{"h",8,1,2,5,6,9},
{"i",9,1,2,5,6,0}
};
//静态链表的打印
void jobtable_print()
{
int i=0;
//while(jobtable[i].next!=0)
for(i=1;i<N;i++)
{
//i=jobtable[i].next;
printf("%s,",jobtable[i].name);
printf("%d,",jobtable[i].length);
printf("%d,",jobtable[i].printer);
printf("%d,",jobtable[i].tape);
printf("%d,",jobtable[i].runtime);
printf("%d,",jobtable[i].waittime);
printf("%d" ,jobtable[i].next);
printf("\n");
};
}
//静态链表的排序
void jobtable_sort()
{
int index,pre_index;
jobtable[1].next=0; //将头节点和第一个节点构成一个环
//将后边的节点按关键字插入环中
for(int i=2;i<N;i++)
{
pre_index=0;
index=jobtable[pre_index].next;
if(jobtable[i].length<=jobtable[jobtable[0].next].length)
{
jobtable[pre_index].next=i;
jobtable[i].next=index;
}
else{
for(int j=jobtable[0].next,k;jobtable[i].length>jobtable[j].length;k=j,j=jobtable[j].next);
jobtable[i].next=j;
jobtable[k].next=i;
}
}
}
//主函数
void main()
{
cout<<"请输入排序方式";
printf("排序前:\n");
jobtable_print();
sort(jobtable);
printf("排序后:\n");
void pcb_printf ();
jobtable_print();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -