一、功能描述
案例描述:将Person自定义数据类型进行排序,Person中属性有姓名、年龄、身高
排序规则:按照年龄进行升序,如果年龄相同,按照身高进行降序
二、主要代码
/*案例描述:将Person自定义数据类型进行排序,Person中属性有姓名、年龄、身高
排序规则:按照年龄进行升序,如果年龄相同,按照身高进行降序*/
#include<iostream>
#include <list>
#include<algorithm>
using namespace std;
class Person
{
public:
Person(string name,int age,int height)
{
this->m_Name = name;
this->m_Age = age;
this->m_Height = height;
}
string m_Name;
int m_Age;
int m_Height;
};
void ShowList(list<Person> &L)
{
for (list<Person>::iterator it = L.begin();it!= L.end();it++)
cout << "姓名:" << it->m_Name << " " << "年龄" << it->m_Age << " " << "身高:" << it->m_Height << endl;
}
bool PersonCompare( Person & L1, Person & L2)
{
if (L1.m_Age==L2.m_Age)
{
return L1.m_Height > L2.m_Height;
}
else
{
return L1.m_Age < L2.m_Age;
}
}
int main(void)
{
list<Person> L;
Person p1("贾晓静",55,158);
Person p2("李晓瑞",23,160);
Person p3("张晓艳",24,155);
Person p4("江晓枫",24,160);
Person p5("涂晓慧",23,160);
Person p6("丁晓菲",24,160);
Person p7("赵晓新",23,175);
Person p8("李晓欣",23,170);
L.push_back(p1);
L.push_back(p2);
L.push_back(p3);
L.push_back(p4);
L.push_back(p5);
L.push_back(p6);
L.push_back(p7);
L.push_back(p8);
ShowList(L);
L.sort(PersonCompare);
cout << endl << "排序后的list" << endl;
ShowList(L);
system("pause");
return 0;
}
运行结果:
总结
在数据结构中对长链表进行排序是一个复杂的工程,但是C++中很好的结合了语言和算法,引入数据结构常见的算法,减少了底层的编程,提高了编程效率。