由于gcc中的指针导致的分段错误
Segmentation fault due to pointer in gcc
我正试图使用以下代码实现链表,我得到了段故障错误,请告诉我问题在哪里。
我正在使用ubuntu gcc编译器,请给我一些建议
#include<iostream>
using std::cout;
using std::cin;
class ll
{
struct node
{
int info;
node *nextnode ;
}*n;
public:
ll()
{
n=NULL;
}
void getinfo()
{
node *temp,*r;
if( n==NULL )
{
temp=new node;
cout<<" n enter the first elements of linklist n";
int z;
cin>>z;
//i guess problem starts here
temp->info=z;
cout<<"the value of info is";
temp->nextnode = NULL;
n=temp;
}
else{
temp=n;
cout<<"heheh balls";
while(temp->nextnode==NULL)
{
temp=temp->nextnode;
}
r=new node;
cout<<"enter the element t";
int y;
cin>>y;
r->info=y;
r->nextnode=NULL;
temp=r;
}
}
void display()
{
node *temp=n;
while(temp->nextnode==NULL)
{
cout<<temp->info;
}
}
};
int main()
{
ll p;
int v;
cout<<"enter the number of elements to be added to linklist t";
cin>>v;
//tryn to input linklist from terminal
for(int i=0;i<v;i++)
{
p.getinfo();
}
p.display();
return 0;
}
while(temp->nextnode==NULL)
{
temp=temp->nextnode;
}
....
temp=r;
应该while(temp->nextnode!=NULL)
{
temp=temp->nextnode;
}
....
temp->nextnode=r;
void display()
{
node *temp=n;
while(temp->nextnode==NULL)
{
cout<<temp->info;
}
}
应:void display()
{
node *temp=n;
while(temp!=NULL)
{
cout<<temp->info;
temp = temp->nextnode;
}
}
代码中有几个错误,如下所示:
void
getinfo ()
{
node *temp, *r;
if (n == NULL)
{
temp = new node;
cout << " n enter the first elements of linklist n";
int z;
cin >> z;
//i guess problem starts here
temp->info = z;
cout << "the value of info is";
temp->nextnode = NULL;
添加下一行后,必须将标题指向第一个元素。
n = temp;
继续……
}
else
{
temp = n;
cout << "heheh balls";
这里你应该迭代,而这里是下一个元素,将==
改为!=
。
while (temp->nextnode != NULL)
继续……
{
temp = temp->nextnode;
}
r = new node;
cout << "enter the element t";
int
y;
cin >> y;
r->info = y;
r->nextnode = NULL;
temp->nextnode = r;
}
}
下功能: void
display ()
{
node *temp = n;
下一行改变了,当你有一个节点
时继续打印数字while (temp)
{
cout << temp->info;
不要忘记移动到下一个节点
temp = temp->nextnode;
}
}
就是这样,它成功了
相关文章:
- 在某些循环内使用vector.push_back时出现分段错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 当我的阵列太大时出现分段错误
- 分段错误当我试图运行程序时出错
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 尝试使用集合函数时出现分段错误
- 我无法缩小此分段错误的原因
- g++的分段错误(在NaN上使用to_string两次时)
- 我是如何在这段代码中出现分段错误的
- 创建结构的数组时遇到分段错误
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 在 c++ 中实现 Trie 时出现分段错误
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 为什么我遇到分段错误?
- 动态类的分段错误(家庭作业问题)
- 分段错误 - 读取初始化指针的数组
- 如何摆脱C ++中的分段错误错误?
- 使用 CTYPE 时出现分段错误
- 为什么代码给出分段错误?