Desculpe a falta de tempo para comentar ela corretamente e detalhar, mas é que estou no trabalho e meio enrolado! Qualquer coisa é só postar a duvida #include <cstdlib>
#include <iostream>
#include <list> //List da biblioteca da STL
using namespace std;
//Estrutura de Funcionario
struct Funcionario
{
char szNome[50];
int iCodigo;
};
//Funcao usada para a ordenacao
bool CompareNome(const Funcionario* a, const Funcionario* b)
{
for(int i = 0; i < strcmp(a->szNome, b->szNome)?strlen(b->szNome):strlen(a->szNome); i++)
{
if(a->szNome[i] < b->szNome[i])
return true;
if(a->szNome[i] > b->szNome[i])
return false;
}
}
int main(int argc, char *argv[])
{
//Inicializacao da Lista
list<Funcionario*> *liFunc = new list<Funcionario*>;
//Insercao de nomes aleatorios
for(int i = 0; i < 10; i++)
{
Funcionario *NovoFunc = (Funcionario*)malloc(sizeof(Funcionario));
strcpy(NovoFunc->szNome, "");
for(int j = 0; j < rand()%50+1; j++)
sprintf(NovoFunc->szNome, "%s%c", NovoFunc->szNome, rand()%23+65);
NovoFunc->iCodigo = i;
liFunc->push_front(NovoFunc);
}
//Ordenacao
liFunc->sort(CompareNome);
//Exibicao da lista ordenada
for(int i = 0; i < 10; i++)
{
cout << liFunc->front()->szNome << endl;
liFunc->pop_front();
}
system("PAUSE");
return EXIT_SUCCESS;
} Abrass