Ir ao conteúdo
  • Cadastre-se
Jean Carlos_749052

Minha lista encadeada não está imprimindo. Alguém ajuda?

Recommended Posts

Sou inciante e estou treinando alguns conceitos básicos na faculdade sobre listas encadeadas com ponteiros.

Estou implementando uma lista onde quero fazer cadastro de moradores de um condomínio, onde serão cadastrados o nome e se possuem veículos dentro do apartamento. 

Porém na hora que chamo a função imprimir(), simplesmente não acontece nada, embora eu ache que a lógica esteja certa.

Alguém pode me ajudar ?

Segue o código:

 

#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
 
struct Morador
{
    string nome;
    string veiculo;
    string placa;
    string condominio;
    Morador *proximo;
};
struct ListaMoradres
{
    Morador *primeiro;
};
 
ListaMoradres lista; // CRIEI UMA LISTA GLOBAL, POIS QUERO QUE A LISTA CONTINUE COM OS CADASTROS MESMO APÓS O FIM DA EXECUÇÃO                                    // DO MAIN (NAO SEI SE TA CERTO FAZER ISSO KKK)
void inciar()
{
    lista.primeiro = nullptr;
}
void inserir_Morador()
{
    string nome = "";
    string veiculo = "";
    string placa = "";
    string condominio = "";
    int op;
 
    cout << "Digite o nome do morador\n";
    cin >> nome;
    cout << "\nPossui veiculo?\n1-SIM\t2-NAO\n";
    cin >> op;
    switch (op)
    {
      case 1:
        cout << "Carro ou Moto? 1- CARRO\t2- MOTO\n";
        cin >> op;
        if (op == 1)
        {
            cout << "Digite placa:\n";
            cin >> placa;
            veiculo = "(Carro)";
            break;
       }
       else
       {
            cout << "Digite placa\n";
            cin >> placa;
            veiculo = "Moto";
            break;
       }
    case 2:
        veiculo = "Nao possui";
        break;
    default:
        cout << "Opcao invalida\n";
        break;
    }
}
if (lista.primeiro == nullptr)
{
    Morador *primeiro_Morador = new Morador();
    lista.primeiro = primeiro_Morador;
    primeiro_Morador->nome = nome;
    primeiro_Morador->veiculo = veiculo;
    primeiro_Morador->placa = placa;
    primeiro_Morador->condominio;
    primeiro_Morador->proximo = nullptr;
    cout << "Primeiro morador inserido com sucesso\n";
    return;
}
else
{
    Morador *ultimo = lista.primeiro;
    while (ultimo->proximo != nullptr)
    ultimo = ultimo->proximo;
    Morador *novo = new Morador();
    ultimo->proximo = novo;
    novo->nome = nome;
    novo->veiculo = veiculo;
    novo->placa = placa;
    novo->condominio = condominio;
    novo->proximo = nullptr;
    cout << "Morador inserido com sucesso\n";
    return;
}
}
void imprimir()
{
    Morador *inicio = lista.primeiro;
    while (inicio->proximo != nullptr)
    {
        cout << "\nNome: "+inicio->nome << endl;
        cout << "Veiculo: " + inicio->veiculo << endl;
        cout << "Placa: " + inicio->placa << endl;
        cout << "Condominio: " + inicio->condominio << endl;
        inicio = inicio->proximo;
    }
return;
}
int main()
{
    int op;
    cout << "1 - inciazlizar\t2 - inserir\t3 - imprimir\n";
    cin >> op;
    switch (op)
    {
        case 1:
           inciar();
           break;
        case 2:
           inserir_Morador();
           break;
        case 3:
           imprimir();
           break;
        default:
           cout << "Opcao invalida\n";
           break;
}
main();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você colocou um colchete a mais antes de 'if (lista.primeiro == nullptr)'.

Além disso, mesmo que seu compilador permita chamar a função main() recursivamente, entenda que isso foge dos padrões da linguagem... outros compiladores podem marcar seu código com erro de sintaxe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×