该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
练习使用 deque 和 list 处理数据(10分)
题目内容:
1. 从标准输入读入一些整数存入deque中。
1.1 整数可能有正有负
1.2 遇到非整数输入(例如字母)时就停止读入
1.3 这些整数,可能由空格分隔,也可能由回车分隔
2. 如果是奇数,则从头部放到deque中,如果是偶数,则从队尾放到deque中
2.1 例如,按顺序输入 9, 3, 6, 2, 3, 8 ,7, 0, x ,每个数字/字母输入后均有回车,则在输入字母x后程序停止读入数据
2.2 存入deque后,为: 队头-> 7 3 3 9 6 2 8 0
3. 将deque中的数据的顺序反转后存入list1
3.1 续上例,deque中的数据为:队头-> 7 3 3 9 6 2 8 0
3.2 则deque的数据翻转存入list1后: 0 8 2 6 9 3 3 7
4. 将deque和list1中对应位置的元素相加,然后按照相应的次序存入另外一个list2
4.1 续上例,deque中的数据为: 队头-> 7 3 3 9 6 2 8 0
4.2 续上例,list1中的数据为: 0 8 2 6 9 3 3 7
4.2 则deque与list1中的对应数据相乘并存入list2后: 0 24 6 54 54 6 24 0
5. 将list2 中的数据按序输出,两个整数之间使用一个空格分隔(最后一个整数后面没有空格),输出之后,不要换行。
输入格式:
由空格或者回车分隔的多个整数
输出格式:
多个整数,两个相邻整数间有一个空格。最后一个整数后面【没有】任何空格,也没有回车
输入样例:
9 4 2 5 9
2 0 x
输出样例:
0 10 18 16 18 10 0
提示:
由于输出结果的最后一个整数后面没有空格,因此在输出语句中,需要判断所输出的整数是否是list中的最后一个。
怎么判断呢?
你可以用 list 中的函数 size() 来获取 list对象中所有元素的个数。在输出整数时,对输出元素的数量计数。当发现是最后一个整数时,就不再输出空格了。
//示例代码
auto count = list2.size();
for (il = list2.begin(); il != list2.end(); il++) {
std::cout << *il << ((--count > 0)?" ":"");
}