linux0.12-电梯调度算法

#define IN_ORDER(s1,s2) (((s1)->val) < ((s2)->val))

typedef struct elevateList {
	int val;
	struct elevateList* next;
}EL;

void printfList(EL* A) {
	EL* tmp = A;
	for (; tmp; tmp = tmp->next) {
		//cout << tmp->val << " ";
		printf("%d ",tmp->val);
	}
	//cout << endl;
	printf("\n");
}

void elInsert(EL* tmp, EL* req) {
	EL* tmp1 = tmp;
	//cout << "insert " << req->val << endl;
	printf("insert:%d\n",req->val);
	printfList(tmp);

	for (; tmp1->next; tmp1 = tmp1->next)
	#if 0
		if ((IN_ORDER(tmp1, req) || !IN_ORDER(tmp1, tmp1->next)) 
			&& IN_ORDER(req, tmp1->next))
	#else
	//IN_ORDER(s1,s2) (((s1)->val) < ((s2)->val))
		if (((((tmp1)->val) < ((req)->val)) || !(((tmp1)->val) < ((tmp1->next)->val))) && 
			(((req)->val) < ((tmp1->next)->val)))
	#endif
		{
			break;
		}
	req->next = tmp1->next;
	tmp1->next = req;

	printfList(tmp);
	//cout << endl;
}

测试代码

	EL A = { 53, NULL };
	EL req = { 10, NULL };
	EL B = { 183, NULL }, C = { 37, NULL }, D = { 122, NULL }, E = { 14, NULL }, \
	F = { 124, NULL }, G = { 65, NULL }, H = { 67, NULL }; EL I = { 11, NULL };

	EL* tmp = &A;

	elInsert(tmp, &req); 
	elInsert(tmp, &B); 
	elInsert(tmp, &C); 
	elInsert(tmp, &D); 
	elInsert(tmp, &E); 
	elInsert(tmp, &F); 
	elInsert(tmp, &G); 
	elInsert(tmp, &H);
	while(1)
	{
	}

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值