dev-c ++ 4.9.9.2中的单链表

时间:2017-08-22 02:18:53

标签: c++ list linked-list insert

这是链接列表的C代码,但这不会产生所需的输出。

# include <iostream>
# include <stdlib.h>
using namespace std;
struct listas
{
    char nombre[30];
    string celular;
    listas *direccionA;
};
listas *listao,*listaaux;
void ingreso();
void mostrar();
int main()
{
    int I,Humanos,Num;
    while(true){
    printf("Numero de personas a registrar: \n");
    scanf("%d", &Humanos); 
    for(I=1; I<=Humanos; I++){
             ingreso();
             }
             mostrar();
    }
}
void ingreso(){
    if(listao==NULL){
        listao=new(listas);
        cout<<"Ingresa el nombre"<<endl;
        cin>>listao->nombre;
        cout<<"Ingresa el numero de celular"<<endl;
        cin>>listao->celular;
        cout<<"Datos ingresados correctamente"<<endl;

        return;
    }
    listaaux=new(listas);
    cout<<"Ingresa el nombre"<<endl;
    cin>>listaaux->nombre;
    cout<<"Ingresa el numero de celular"<<endl;
    cin>>listaaux->celular;
    cout<<"Dato ingresado correctamente"<<endl;
    listao->direccionA=listaaux;
    listaaux->direccionA=NULL;
}
void mostrar(){
    if(listao==NULL){
        cout<<"No hay datos en la Lista"<<endl;
    }
    listaaux=listao;
    cout<<"Los datos de la Lista son: "<<endl;
    while(listao!=NULL){
        cout<<"datos de la persona"<<endl;
        cout<<"Nombre:"<<listao->nombre<<endl;
        cout<<"Celular:"<<listao->celular<<endl;
        listao=listao->direccionA;
    }
    cout<<"----"<<endl;
}

这就是结果。它只保存第一个和最后一个日期:

Input and Output Snapshot

但我希望保存所有日期或“n”日期并显示所有日期,但我不知道如何保存所有内容。我认为问题出在ingreso()函数中。

1 个答案:

答案 0 :(得分:0)

问题在于这一行:

listao->direccionA=listaaux;
listaaux->direccionA=NULL;

这只会链接您创建的最后一个节点和第一个节点。 你需要像下一个那样将新节点分配给下一个

listaaux->direccionA = listao->direccionA;
listao->direccionA = listaaux;