[RESOLVIDO] - Duvida em C - Lista Encadeada

2 respostas
shenn
Galera, estou com uma duvida, vo postar o meu codigo eu vo explicar depois =D
// vo postar apenas algumas partes..

struct cliente *ptr_primeiro_cliente, *ptr_anterior_cliente, *ptr_novo_cliente;
int countCliente = 0;

// tenho a minha struct cliente
struct cliente { 
    int id_cliente;
    int telefone_cliente;
    char nome_cliente[50];
    char endereco_cliente[50];
    struct cliente *ptr_cliente;
};

// tenho o meu cadastro cliente

void cadastrarCliente(){
    char nome[50], endereco[50];
    int telefone;    
    
    validarEstruturaCliente(); // chamo a logica para fazer uns negocios que eu nao entendi bem =/
    fflush(stdin);
    printf("Digite o nome do cliente: ");
    gets(nome);
    printf("Digite o endereco do cliente: ");
    gets(endereco);
    printf("Digite o telefone do cliente: ");
    scanf("%d", &telefone);    
    
    strcpy(ptr_anterior_cliente -> nome_cliente, nome);
    strcpy(ptr_anterior_cliente -> endereco_cliente, endereco);
    ptr_anterior_cliente -> telefone_cliente = telefone;
    ptr_anterior_cliente -> id_cliente = countCliente;

    ptr_anterior_cliente -> ptr_cliente = (struct cliente *) NULL;
    countCliente++;
    
    printf("\n\nCliente cadastrado com sucesso!!\n\n");
    _sleep(3000);
    system ("cls");
}

// faz a minha logica que eu nao entendi direito, apenas copiei o exemplo do professor..
void validarEstruturaCliente(){
    ptr_novo_cliente = (struct cliente *) malloc (sizeof(struct cliente));
    if (ptr_primeiro_cliente == (struct cliente *)NULL){
        ptr_primeiro_cliente = ptr_anterior_cliente = ptr_novo_cliente; 
    } else {
        ptr_anterior_cliente = ptr_primeiro_cliente;
        while (ptr_anterior_cliente -> ptr_cliente != (struct cliente *) NULL){
            ptr_anterior_cliente = ptr_anterior_cliente -> ptr_cliente;
        }
        ptr_anterior_cliente -> ptr_cliente = ptr_novo_cliente;
        ptr_anterior_cliente = ptr_novo_cliente;
    }
}

void listar(){
        // gostaria de fazer a funcao listar, porem nao sei como, procurei no google mas nao encontrei nada que me desse uma luz.. alguem!?
}

Então, meu professor da faculdade pediu para fazer um exercicio de cadastro de cliente com lista encadeada..

Porem eu não tenho a minima ideia de como eu faço para listar os itens da listaaa

alguem da uma força aee?!

vlllw =D

2 Respostas

Luizao

Comece pelo começo (ptr_primeiro_cliente), e vá percorrendo o próximo (cliente_atual->ptr_cliente) até que ele seja nulo.

Estude o while dentro da função validarEstruturaCliente, é bem parecido.

shenn

opaa vllw carinhaa =D

consegui resolveer.. segue meu codigoo..
void listarClientes(){
 
    ptr_anterior_cliente = ptr_primeiro_cliente;
    while (ptr_anterior_cliente != NULL) {
        printf("\nCodigo do cliente: %d", ptr_anterior_cliente -> id_cliente);
        printf("\nNome do cliente: %s", ptr_anterior_cliente -> nome_cliente);
        printf("\nEndereco do cliente: %s", ptr_anterior_cliente -> endereco_cliente);
        printf("\nTelefone do cliente: %d", ptr_anterior_cliente -> telefone_cliente);
        printf("\n----------------------------------");
        ptr_anterior_cliente = ptr_anterior_cliente -> ptr_cliente;
    }
}
Criado 22 de setembro de 2012
Ultima resposta 23 de set. de 2012
Respostas 2
Participantes 2