2017-08-22 1 views
0

Ceci le code C à une liste liée, mais cela ne produit pas la sortie désirée.liste à lien unique dans dev-C++ 4.9.9.2

# 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; 
} 

et ceci est le résultat. Il enregistre uniquement la première et la dernière date:

Input and Output Snapshot

Mais je veux enregistrer toutes les dates ou « n » dates et afficher toutes les dates, mais je ne sais pas comment sauver tout. Je pense que le problème est dans la fonction ingreso().

+0

Je vous recommande de lire [Comment déboguer des petits programmes] (https://ericlippert.com/2014/03/05/how-to- debug-small-programs /), en savoir plus sur [debugging caoutchouc-canard] (https://en.wikipedia.org/wiki/Rubber_duck_debugging) et comment utiliser un débogueur réel pour parcourir votre code ligne par ligne. –

+0

désolé ami de ne pas comprendre la langue en conséquence pas en mesure de comprendre ce genre d'aide dont vous avez besoin –

+0

J'ai besoin de ce spectacle toutes les données ajoutées. Non seulement la première et la dernière donnée. –

Répondre

0

Le problème est cette ligne:

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

cela ne va relier le dernier nœud que vous créez et le premier noeud. vous devez attribuer le nouveau nœud est à côté de la tête suivante comme celui-ci

listaaux->direccionA = listao->direccionA; 
listao->direccionA = listaaux; 
+0

mais maintenant arrêter le programme quand afficher les données "erreur" et fermer l'exécution –

+0

@ HéctorAlonso cela fonctionne pour moi [ici] (http://cpp.sh/6co7z) – Tyger

+0

@ Tyger Avec plus de 3 données? –