【问题标题】:singly linked list in dev-c++ 4.9.9.2dev-c++ 4.9.9.2 中的单链表
【发布时间】:2018-01-30 04:02:18
【问题描述】:

这是一个链表的 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() 函数中。

【问题讨论】:

  • 我建议您阅读How to debug small programs,了解rubber-duck debugging 以及如何使用实际的调试器逐行执行代码。
  • 抱歉朋友不懂语言导致无法理解您需要什么样的帮助
  • 我需要显示所有添加的数据。不仅是第一个和最后一个数据。
  • @HariomSingh 你以前没有读过混淆代码吗?
  • 当您从未设置 listao = NULL 时,您不能期望 listao == NULL 永远为真。

标签: c++ list linked-list insert


【解决方案1】:

问题出在这一行:

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

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

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

【讨论】:

  • 但是现在在显示数据“错误”时停止程序并关闭执行
  • @Tyger 有超过 3 个数据?
  • @HéctorAlonso 是的,先生。您是否尝试点击链接并对其进行测试?
  • 你只替换了“listao->direccionA=listaaux; listaaux->direccionA=NULL;”对于“listaaux->direccionA = listao->direccionA;listao->direccionA = listaaux;” ?在同一行?我不明白它对我的不起作用
猜你喜欢
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 2013-01-06
  • 1970-01-01
  • 2011-01-19
相关资源
最近更新 更多