| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2253 人关注过本帖
标题:怎么对结构体使用stl中的排序函数?急!
取消只看楼主 加入收藏
习惯被动
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:139
专家分:144
注 册:2012-3-5
结帖率:84.62%
收藏
已结贴  问题点数:30 回复次数:2 
怎么对结构体使用stl中的排序函数?急!
定义一个结构:职工号(no)、姓名(name)、部门号(depno)、工资数(salary)、职工号指针(pno)、部门号指针(pdepno)和工资数指针(psalary)。
后面的三个指针最好定义在联合体中,而且定义的结构还能使用stl中的list< >。
程序代码:
#include <iostream>
#include <string>
#include <list>
using namespace std;
typedef struct ZhiGong
{
char no[15];
char name[5];
char depno[15];
int salary;
ZhiGong *next;
union
{
ZhiGong *pno;
ZhiGong *pdeno;
ZhiGong *psalary;
}Zhizhen;

}zhig;
void shuru();//录入新员工信息
void shuchuall();//输出所有员工信息
void pailieno();//按职工号排序
void shuchuno();//按职工号全部输出
void pailiedepno();//按部门号排序
void shuchudepno();//按部门号全部输出
void pailiesalary();//按工资排序
void shuchusalary();//按工资全部输出
void clearall();//全部清除
void baocuntuichu();//保存并退出
void init(zhig *s)
{
    s->next=NULL;
}
void shuru(zhig *s)
{
    zhig *p;
    p=new zhig;
    cout<<"请输入职工号:";
    cin>>p->no;
    cout<<endl<<"请输入名字:";
    cin>>p->name;
    cout<<endl<<"请输入部门号:";
    cin>>p->depno;
    cout<<endl<<"请输入工资:";
    cin>>p->salary;
    p->next=s->next;
    s->next=p;
}
void shuchuall(zhig *s)
{
    zhig *q;
    q=s->next;
    while(q!=NULL)
    {
        cout<<"职工号:"<<q->no<<endl;
        cout<<"姓名:"<<q->name<<endl;
        cout<<"部门号:"<<q->depno<<endl;
        cout<<"工资:"<<q->salary<<endl;
        q=q->next;
    }
    cout<<endl;
}
void pailieno(zhig *s)
{
    /*zhig *p,*r;
    r=s;
    p=s->next;
    while(r->next!=NULL){
    while(p->next!=NULL)
    {
        if(strcmp(r->next->no,p->next->no))
        {
        //
        }
        p=p->next;
    }
    r=r->next;
    }*/
    list<zhig> l(s);//在排序不分我想用stl中的函数,但不知道怎么用求教
    l.sort();
}

int main()
{
    zhig *s;
    s=new zhig;
    init(s);
cout<<"**************************************\n";
cout<<"          职工信息表\n";
cout<<"**************************************\n";
cout<<"    请输入相应的数字进行操作(0-9)\n";
cout<<"    1: 添加一个职工记录\n";
cout<<"    2: 输出全部职工记录\n";
cout<<"    3: 按职工号排序\n";
cout<<"    4: 按职工号全部输出\n";
cout<<"    5: 按部门号排序\n";
cout<<"    6: 按部门号全部输出\n";
cout<<"    7: 按工资排序\n";
cout<<"    8: 按工资全部输出\n";
cout<<"    9: 全部清除\n";
cout<<"    0: 保存并退出\n";
cout<<"**************************************\n";
int m=10;
while(m)
{
    cout<<"请输入0-9的数字:";
    cin>>m;
switch(m)
{
case 1:shuru(s);break;
case 2:shuchuall(s);break;
/*case 3:pailieno();break;
case 4:shuchuno();break;
case 5:pailiedepno();break;
case 6:shuchudepno();break;
case 7:pailiesalary();break;
case 8:shuchusalary();break;
case 9:clearall();break;
case 0:baocuntuichu();break;*/
}
}

return 0;
}

在排序部份我想用stl中的排序函数(sort)进行排序,但不知道怎么用求教.急!

搜索更多相关主题的帖子: 最好 结构体 工资 
2012-06-10 18:51
习惯被动
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:139
专家分:144
注 册:2012-3-5
收藏
得分:0 
回复 2楼 lonmaor
呃,用这个方法好像对我定义那个结构体排不了序吧?我要的排序效果是:根据定义的结构体中某个数据的大小进行整体的排序。例如我要根据员工的工资高低进行员工所有信息的排序。这样怎么弄呢?
2012-06-11 23:32
习惯被动
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:139
专家分:144
注 册:2012-3-5
收藏
得分:0 
回复 4楼 lonmaor
简单地说就是pailieno函数怎么使用stl中的涵数(比如sort或其他涵数都可以)进行排序,因为我不想自己写排序涵数.最好是用我那个代码实现pailieno( )涵数,谢谢
2012-06-13 11:03
快速回复:怎么对结构体使用stl中的排序函数?急!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044306 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved