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

📄 fcfs.cpp

📁 模仿操作系统的先来先服务
💻 CPP
字号:
// fcfs.cpp : Defines the entry point for the console application.
//

//#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
typedef  struct _Node {
	
	double  arrive_time;
	double  exe_time;
	struct _Node * next;
} node;



node * create_list()
{
	char buf[256];
	double reach_time;
	double exe_time;
	char *preach,*pexe;
	FILE  *fp =NULL;
	fp = fopen("c:\\fifo.dat","r");
	if (fp ==NULL)
	{
		perror("fopen");
		exit(1);
	}
	
	node * pHead = (node *)malloc(sizeof(node));
	node *head = pHead;
	if (pHead == NULL)
	{
		perror("malloc:");
		exit(1);
	}
	while(fgets(buf,256,fp))
	{	
		preach = strtok(buf," ");	
		pexe   = strtok(NULL," ");
		node *newnode =(node *)malloc(sizeof(node));
		if (newnode == NULL)
		{
			perror("malloc");
			exit(1);
		}
		newnode->arrive_time = atof(preach);
		newnode->exe_time = atof(pexe);
		pHead->next = newnode;
		pHead = newnode;
	}
	node *temp = head;
	head = head->next;
	free(temp);
	pHead->next = NULL;
	fclose(fp);
	return head;		
}
node * sort_list(node *pHead)
{
	double  min;
	node * p1,*p2;
	p1 = pHead;
	int node_count = 0;
	while(p1->next)
	{
		node_count++;
		p1=p1->next;
	}
	min = p1->arrive_time;
	p1 = pHead;
	node * newhead = (node *)malloc(sizeof(node));
	node *head = newhead;
	head = pHead;
	node *poldhead;
	while(node_count >1)
	{
		p1=pHead;
		while(p1->next != NULL)
		{
			if (min >p1->next->arrive_time)
			{
				min = p1->next->arrive_time;
			}
			p1=p1->next;
		}
		p1=p2=pHead;
		while((p1->arrive_time != min)&&(p1->next!=NULL))
		{
			if((p1 == pHead)&&(p1->arrive_time == min))
			{
				poldhead = head;
				pHead=pHead->next;
				head->next=p1;
				head=p1;
				break;
			}
			if(p1->arrive_time == min)
			{
				p2->next=p1->next;
				head->next=p1;
				head=p1;
				break;
			}
			p2=p1;
			p1=p1->next;
		}
		if ((p1->next == NULL)&&(p1->arrive_time == min))
		{
			p2->next=NULL;
			head->next=p1;
			head = p1;
		}	
		node_count--;   
	}
	poldhead=poldhead->next;
	return poldhead;
}
void  output_list(node * pHead)
{
	while(pHead->next!=NULL)
	{	
		cout<<"arrive_time is"<<pHead->arrive_time<<endl;
		pHead=pHead->next;
	}
}
int main(int argc, char* argv[])
{
	node * pHead = create_list();
	pHead = sort_list(pHead);
	output_list(pHead);
	return 0;
}

⌨️ 快捷键说明

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