题目
小蓝负责一个公司的考勤系统, 他每天都需要根据员工刷卡的情况来确定 每个员工是否到岗。
当员工刷卡时, 会在后台留下一条记录, 包括刷卡的时间和员工编号, 只 要在一天中员工刷过一次卡, 就认为他到岗了。
现在小蓝导出了一天中所有员工的刷卡记录, 请将所有到岗员工的员工编 号列出。
输入格式
输入的第一行包含一个正整数 n, 表示一天中所有员工的刷卡记录的条数。 接下来n 行, 每行包含一条刷卡记录, 每条刷卡记录的格式为:
HH:MM:SS ID
其中 HH:MM: SS 表示刷卡时间, HH 为一个 0 到 23 之间的两位十进制整数 (可能含前导 0 ) 表示时, MM 为一个 0 到 59 之间的两位十进制整数 (可能含前 导 0) 表示分, SS 为一个 0 到 59 之间的两位十进制整数 (可能含前导 0 ) 表 示秒, ID 为一个不含前导 0 的整数表示员工的编号。
所有记录按照刷卡时间升序排列, 可能同一时刻有多人刷卡。
输出格式
输出若干行, 每行包含一个整数, 按照从小到大的顺序输出, 表示到岗员 工的编号。
问题描述
我的思路是:
先把数据存储在一个链表里面,然后给链表排序,最后输出
遇到问题是:
我把数据存储在链表,没排序,就输出结果,想先看看这两部分代码对不对,然后就出现问题了。
不管我输入几个员工人数 amount ,他的输出都是amount 个 amount,并且只能读入我输入的前两个结构体,就自动输出了
希望可以帮忙看看,哪里出错了,是输入函数有问题还是输出函数有问题,还是其他问题
#include<bits/stdc++.h>
using namespace std;
//员工出勤情况
typedef struct people{ //时间以及员工编号
int h;
int m;
int s;
int id;
char a;
char b;
}StaffInfo;
void StaffInput(StaffInfo &staff)//结构体输入函数
{
cin>>staff.h;
cin>>staff.a;
cin>>staff.m;
cin>>staff.b;
cin>>staff.s;
}
void ListInput(list<StaffInfo> &StaInfoList,int amount)//链表输入函数
{
StaffInfo staff;
for(int i=0;i<amount;i++)
{
StaffInput(staff);
StaInfoList.push_front(staff);
}
}
void ListDisplay(list<StaffInfo> StaInfoList)//结果输出函数
{
for(list<StaffInfo>::iterator it=StaInfoList.begin();it!=StaInfoList.end();it++)
{
cout<<it->id<<endl;
}
}
int main()
{
int personAmount;
cin>>personAmount;
list<StaffInfo> StaInfoList;
ListInput(StaInfoList ,personAmount);
// StaInfoList.sort();
// cout<<"排序完成";
ListDisplay(StaInfoList);
return 0;
}