原题:
病人排队
建立链表
思路,从左到右历遍,如果年龄小于60,位置不变。
年龄大于60. 从链表的第一个点开始,找到第一个比它小的,插入到该位置
代码:(AC)
#include<iostream>
#include<list>
#include<stdio.h>
using namespace std;
struct node {
char id[11];
int age;
};
int main()
{
freopen("c:\\bailian\\08.txt", "r", stdin);
int n;
cin >> n;
list<node>patient;
list<node>::iterator it;
while (n--)
{
node newNode;
cin >> newNode.id;
cin >> newNode.age;
//如果小于60岁,直接插在末尾
if (newNode.age < 60)
patient.push_back(newNode);
else
{
//否则,从前往后历遍
for (it = patient.begin(); it != patient.end(); ++it)
{
if (it->age < newNode.age)break;
}
patient.insert(it, newNode);
}
}
for (it = patient.begin(); it != patient.end(); ++it)
cout << it->id << endl;
}