银行业务队列简单模拟
设某银行有 A 、B 两个业务窗口 ,且处理业务的速度不 一样 ,其中 A 窗口处理速度是 B 窗口 的 2 倍–即当 A 窗口每处理完 2 个顾客时 ,B 窗口处理完 1 个顾客 。给定到达银行的顾客序列 ,请按业务完成的顺序输出顾客序列 。假定不考虑顾客先后到达的时间间隔 ,并且当不同窗口 同时处理完 2 个顾客时 ,A 窗口顾客优先输出 。
- 输入说明 :
输入为 一行正整数 ,其中第 1 个数字 N ( N <1000 )为顾客总数 ,后面跟着 N 位顾客的编号 。编号为奇数的顾客需要到 A 窗口办理业务 ,为偶数的顾客则去 B 窗口。数字间 以空格分隔 。 - 输出说明 :
按业务处理完成的顺序输出顾客的编号 。数字间以 空格分隔 ,但最后一个编号后不能有多余的空格 - 测试用例 :
- 顺序存储:
typedef struct {
int data[MAXSIZE];
int last;
}list;
int creatlist(list *l,list *_l)
{
int i=0,j=0,k=0,a,count; list *p1 = l,*p2=_l;
scanf_s("%d", &count);
if (!count) return 0;
while(i < count ){
scanf_s(" %d",&a );
if (a % 2 == 0) //_l 偶B 窗口 l 奇A 窗口
p2->data[j++] = a;
else
p1->data[k++] = a;
i++;
}
p1->last = k;
p2->last = j;
return 1;
}