Ir ao conteúdo

Posts recomendados

Postado

Eu tenho uma biblioteca que ordena por char, porém preciso alterar ela para ordenar por nome e ID

Alguém pode me ajudar, comecei alterar só que não identifico o erro

 

#include <string.h>
#include <conio.h>
#include <iostream>
using namespace std;

 

struct Cliente {
char nomeCliente[30]; 
int ordemChegada;
};

 

struct NoLO {
Cliente cliente;
};

 

void criarLO (NoLO *&LO) {
    LO = NULL;
}

int loVazia(NoLO *LO) {
    return (LO == NULL);
}

//INSERIR

void inserirNaLO (NoLO *&LO, Cliente c) {
    NoLO *aux = new (NoLO);
    strcpy(aux->nomeCliente,c.nomeCliente);
    aux->IDCliente=c.IDCliente;
    
    NoLO *vizE = NULL;
    NoLO *vizD = LO;
    
    while ((vizD != NULL) && (c > vizD->aux->nomeCliente)) {
        vizE = vizD;
        vizD = vizD->prox;
    }
    
    if (vizE == NULL) {
        LO = aux;
    }
    else {
        vizE->prox = aux;
    }
    aux->prox = vizD;    
}

//REMOVER

void removerDaLO (NoLO *&LO, Cliente c) {
    
    NoLO *vizE = NULL;
    NoLO *vizD = LO;
    
    
    while ((vizD != NULL) && (c > vizD->info)) {
        vizE = vizD;
        vizD = vizD->prox;
    }
    
    if (vizD != NULL && vizE == NULL) {
        LO = LO->prox;
        delete(vizD);
        printf("%c removido!", c);
        return;
    }
    
    else if (vizD != NULL) {    
        NoLO *aux = vizD;
        vizD = vizD->prox;
        delete(aux);
    
        if (vizD != NULL) 
            vizE->prox = vizD;
        
        else {
            if (vizE == NULL) 
                LO = vizD;                
            else
                vizE->prox = vizD;
        }
        printf("%s removido!", c);
        return;
    }
    
    printf("%c nao localizado na lista!", c);
}

//IMPRIMIR

void imprimirLO (NoLO *LO) {
    system("cls");
    if (!loVazia(LO)) {    
        NoLO *aux = new (NoLO);
        aux = LO;        
        while (aux != NULL) {
            printf(" %s, %i -> ", aux->cliente.nomeCliente, aux->cliente.ordemChegada);
            aux = aux->prox;
        }
    }
    else
        printf("Lista vazia!");
    printf("\n\n");
    system("pause");
}

  • Curtir 1
Postado

você não disse onde está o erro. Sobre a ordem basta mudar a comparação. Em geral se usa uma função de comparação, como o próprio qsort() da biblioteca, e assim fica independente.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...