1
I am wanting to do ordering of a struct that is referenced within another struct:
Detail: can be a sort using Selection Sort
typedef struct{
int tipo;
char dispositivo[50];
int prioridade;
}Perif;
typedef struct no{
Perif info;
struct no* prox;
}Aux_Perif;
Aux_Perif* criarLista(){
return NULL;
}
void imprimirLista(Aux_Perif** lista, int size){
Aux_Perif* aux = *lista;
while (aux != NULL){
std::cout << "DISPOSITIVO: ";
std::cout << aux->info.dispositivo << std::endl;
std::cout << "PRIORIDADE: ";
std::cout << aux->info.prioridade << std::endl;
aux = aux->prox;
}
}
void inserirFinal(Aux_Perif** perifericos, Perif barramento){
Aux_Perif* novo = (Aux_Perif*)new Aux_Perif;
novo->info = barramento;
Aux_Perif* aux = *perifericos;
Aux_Perif* anterior = NULL;
if (*perifericos == NULL){
*perifericos = novo;
}else{
while(aux != NULL){
anterior = aux;
aux = aux->prox;
}
anterior->prox = novo;
}
}
int main(){
int solic;
int cont = 0;
int aux = 0, prior = 0;
Aux_Perif* perifericos;
perifericos = criarLista();
std::cout << "Entre com o número de solicitações: " << std::endl;
std::cin >> solic;
std::cout << "Periféricos:\n1. Impressora\n2. Mouse\n3. Teclado\n4. Scanner\n5. Roteador\n6. Disco Rígido" << std::endl;
std::cout << "De acordo com os números e Periféricos acima, insira a ordem de entrada das solicitações e sua prioridade" << std::endl;
while (cont < solic){
Perif ordem;
std::cin >> aux >> prior;
switch (aux){
case 1:
//ordem.dispositivo = 'Impressora';
strcpy(ordem.dispositivo, "Impressora");
break;
case 2:
strcpy(ordem.dispositivo , "Mouse") ;
break;
case 3:
strcpy(ordem.dispositivo , "Teclado");
break;
case 4:
strcpy(ordem.dispositivo , "Scanner");
break;
case 5:
strcpy(ordem.dispositivo , "Roteador");
break;
case 6:
strcpy(ordem.dispositivo , "Disco Rígido");
break;
default:
std::cout << "Error" << std::endl;
break;
}
ordem.tipo = aux;
ordem.prioridade = prior;
cont++;
inserirFinal(&perifericos, ordem);
//delete[] ordem;
}
std::cout << "Daisy Chaining utilizando método de ordem a chegada ou entrada." << std::endl;
imprimirLista(&perifericos, solic);
std::cout << "Método por Prioridade: " << std::endl;
imprimirLista(&perifericos, solic);
return 0;
}
In that case, I want to make the ordination according to the Aux_perif -> info -> prioridade
. Help me out, guys!
I don’t mind the downvote, but I’m curious about it. What’s the reason to vote against it? If anyone comes to say that it is because I gave the answer for free, just see that this here is just a small detail of implementation within the context of what the OP is doing (convert the list into array, use the selectionsort you find easily on the internet and tidy back the pointers, which is no big deal). If it’s for any other reason, I’d really like to know.
– Victor Stafusa