这是链接列表的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;
}
这就是结果。它只保存第一个和最后一个日期:
但我希望保存所有日期或“n”日期并显示所有日期,但我不知道如何保存所有内容。我认为问题出在ingreso()
函数中。
答案 0 :(得分:0)
问题在于这一行:
listao->direccionA=listaaux;
listaaux->direccionA=NULL;
这只会链接您创建的最后一个节点和第一个节点。 你需要像下一个那样将新节点分配给下一个
listaaux->direccionA = listao->direccionA;
listao->direccionA = listaaux;