一起创业网-为互联网创业者服务

病人排队程序怎么写模板

```cpp

include

include

include

using namespace std;

struct Patient {

string id;

int age;

};

bool compareByAge(const Patient &a, const Patient &b) {

if (a.age >= 60 && b.age < 60) return true;

if (a.age < 60 && b.age >= 60) return false;

return a.age > b.age;

}

int main() {

int n;

cout << "请输入病人个数: ";

cin >> n;

priority_queue, decltype(compareByAge)> pq(compareByAge);

for (int i = 0; i < n; ++i) {

Patient p;

cout << "请输入病人ID和年龄(用空格隔开): ";

cin >> p.id >> p.age;

pq.push(p);

}

while (!pq.empty()) {

Patient p = pq.top();

pq.pop();

cout << "就诊病人ID: " << p.id << endl;

}

return 0;

}

```

程序说明:

结构体定义

`Patient` 结构体用于存储病人的ID和年龄。

比较函数

`compareByAge` 函数用于比较两个病人的年龄,优先处理老年人(年龄 >= 60岁),年龄相同的按登记的先后顺序排序,非老年人按登记的先后顺序排序。

主函数

输入病人个数 `n`。

使用优先队列 `pq` 存储病人信息,队列按照 `compareByAge` 函数定义的规则排序。

循环输入每个病人的ID和年龄,并将其加入优先队列。

依次从优先队列中取出病人,输出其ID,直到队列为空。

输入输出示例:

```

请输入病人个数: 5

请输入病人ID和年龄(用空格隔开): 021033010158 67021033

请输入病人ID和年龄(用空格隔开): 021075004003 15010158

请输入病人ID和年龄(用空格隔开): 75102012 30

请输入病人ID和年龄(用空格隔开): 30 20

就诊病人ID: 021033010158

就诊病人ID: 021075004003

就诊病人ID: 75102012

就诊病人ID: 30

```

这个模板可以根据具体需求进行扩展和修改,例如增加更多的病人信息字段或实现更多的功能。