我做了一些代码来理解链接列表在C ++中是如何工作的,在程序终止之前它说错误“退出非零状态”。我目前正在使用在线编译器repl.it来测试C ++代码,我不确定这个问题是否相关。我如何解决它?这是我的代码。详细信息详细信息详细信息详细信息详细信息详细信息详细信息详细信息详细详细信息详细信息详细信息
#include <iostream>
#include <string>
using namespace std;
struct node{
int data;
node* next;
};
int main()
{
node* n; //new
node* t; //temp
node* h; //header
n=new node;
n->data=1;
t=n;
h=n;
cout <<"Pass 1"<<endl;
cout <<"t=" << t << endl;
cout <<"n=" << t << endl;
cout <<"h=" << h << endl;
cout << n->data << endl;
n=new node;
n->data=2;
t->next=n;
t=t->next;
cout <<"Pass 2"<<endl;
cout <<"t=" << t << endl;
cout <<"n=" << t << endl;
cout <<"h=" << h << endl;
cout << n->data << endl;
n=new node;
n->data=3;
t->next=n;
t=t->next;
cout <<"Pass 3"<<endl;
cout <<"t=" << t << endl;
cout <<"n=" << t << endl;
cout <<"h=" << h << endl;
cout << n->data << endl;
//Test pass
//exits with non-zero status
//NULL to pointer means invalid address; termination of program?
n=new node;
t=t->next;
n->data=4;
t->next=n;
n->next=NULL;
cout <<"Pass 4"<<endl;
cout <<"t=" << t << endl;
cout <<"n=" << t << endl;
cout <<"h=" << h << endl;
string a;
a="End test";
cout << a << endl;
return 0;
}
输出
Pass 1
t=0x12efc20
n=0x12efc20
h=0x12efc20
1
Pass 2
t=0x12f0050
n=0x12f0050
h=0x12efc20
2
Pass 3
t=0x12f0070
n=0x12f0070
h=0x12efc20
3
exited with non-zero status
答案 0 :(得分:1)
n=new node;
t=t->next; <- error there
n->data=4;
t->next=n;
n->next=NULL;
此时t
是您创建的第3个节点,此时此节点没有next
属性的值。
您可以使用调试器作为gdb来更轻松地查看此类问题(但可能在您的在线编译器中,您不能)