罗小白


私信TA

用户名:Timmmmy

访问量:16363

签 名:

隔一年又回来刷题了...

等  级
排  名 140
经  验 7190
参赛次数 0
文章发表 46
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

有问题可以互相交流,共同提高 欢迎私信,请多指教:)

解题思路:
        代码非常简单   

        由于输入个数不确定,考虑使用动态分配的STL list 即 链表,两个链表,一个存奇数一个存偶数,分别排序再输出即可
注意事项:
        list.sort()默认生序排列,需要再写一个bool cmp(Elem a, Elem b)函数做降序
参考代码:

#include<bits/stdc++.h>
#define ll long long int
using namespace std;

template<typename Elem>
bool cmp(Elem a, Elem b)
{
    return a > b;
}

int main()
{
    int num;
    list<int> list_odd;             // 奇数链表
    list<int> list_even;            // 偶数链表 
    list<int>::iterator iter;       // 迭代器

    // 分开存放
    while (cin >> num) {
        if (num % 2) list_odd.push_back(num);
        else list_even.push_back(num);
    }

    list_odd.sort(cmp<int>);        // 奇数,降序
    list_even.sort();               // 偶数,升序

    // 输出
    for (iter = list_odd.begin(); iter != list_odd.end(); ++iter) {
        cout << *iter << " ";
    }
    for (iter = list_even.begin(); iter != list_even.end(); ++iter) {
        cout << *iter << " ";
    }
    cout << endl;

    return 0;
}


 

0.0分

21 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区