病人排队(

病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:

  1. 老年人(年龄 \ge 60≥60 岁)比非老年人优先看病。
  2. 老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。
  3. 非老年人按登记的先后顺序看病。

输入格式

#include<stdio.h>
struct pat{
    char id[100];
    int age;
}patient[100];
struct pat old[100],young[100],tmp;
int main(){
    int n;
    int i=0,j=0,k=0,l=0;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%s",patient[i].id);
        scanf("%d",&patient[i].age);
    }
    
    for(i=0;i<n;i++){
        if(patient[i].age>=60)
        {old[l]=patient[i];l++;}
        else
        {young[k]=patient[i];k++;}
    }
    
    for(i=0;i<l;i++){
        for(j=l-1;j>i;j--){
            if(old[j].age>old[j-1].age){
                tmp=old[j];
                old[j]=old[j-1];
                old[j-1]=tmp;
            }
        }
    }
    
    for(i=0;i<l;i++)printf("%s\n",old[i].id);
    for(i=0;i<k;i++)printf("%s\n",young[i].id);
    
    return 0;
    
}

### 实现病人排队系统的 Python 代码 为了实现一个完整的病人排队系统,在此提供一种基于优先级排序的方法。考虑到病人的年龄作为优先条件之一,当病人的年龄大于等于60岁时赋予更高的优先权[^2]。 ```python def priority_key(patient_info): age = int(patient_info[1]) if age >= 60: return (-age, patient_info[2], patient_info[0]) # 负数使较大年龄排在前面 else: return (age, patient_info[2], patient_info[0]) n = int(input()) patients = [] for _ in range(n): patients.append(list(input().split())) # 排序逻辑考虑到了年龄因素以及原始排队顺序 patients.sort(key=priority_key) # 输出处理后的结果 for patient in patients: print(patient[0]) ``` 上述代码实现了对病人信息按特定规则进行排序的功能。这里定义了一个`priority_key`函数用于自定义排序键,其中不仅包含了对于年龄的判断还保留了原有的排队序列以确保相同条件下先到者优先。 另外,针对更复杂的场景如加入队列(`enqueue`)、离开队列(`dequeue`)等功能,则可以引入队列数据结构来管理等待中的患者名单[^3]: ```python from collections import deque class PatientQueue: def __init__(self): self.queue = deque() def enqueue(self, patient_id, age, order_time): new_patient = [patient_id, str(age), str(order_time)] self.queue.append(new_patient) self.reorder_queue() def dequeue(self): if not self.is_empty(): return self.queue.popleft()[0] def reorder_queue(self): temp_list = list(self.queue) temp_list.sort(key=priority_key) self.queue.clear() for item in temp_list: self.queue.append(item) def is_empty(self): return len(self.queue) == 0 # 使用示例 pq = PatientQueue() pq.enqueue('021033', 75, 'first') pq.enqueue('010158', 45, 'second') print(pq.dequeue()) # 应该打印出较老患者的 ID ``` 这段扩展版本展示了如何创建一个类 `PatientQueue` 来封装与病人队伍有关的操作方法,并通过内部调用之前提到过的 `priority_key()` 函数来进行重新排列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值