C++ 链表中的指针错误?
我想创建一个带有整数的链表,在每两个节点之间我想创建另一个节点,它是前一个节点和后一个节点之间的平均值 在我的add函数中,我不明白为什么我的p指针位于链表的最后一个元素而不是第一个元素。(这就是我认为它崩溃的原因) 多谢各位C++ 链表中的指针错误?,c++,linked-list,C++,Linked List,我想创建一个带有整数的链表,在每两个节点之间我想创建另一个节点,它是前一个节点和后一个节点之间的平均值 在我的add函数中,我不明白为什么我的p指针位于链表的最后一个元素而不是第一个元素。(这就是我认为它崩溃的原因) 多谢各位 #include<iostream> using namespace std; struct Nod{ int info; Nod* urm; }; void create(const int &a, Nod *&p, No
#include<iostream>
using namespace std;
struct Nod{
int info;
Nod* urm;
};
void create(const int &a, Nod *&p, Nod *&u)
{
if (p == NULL)
{
p = new Nod;
p->info = a;
u = p;
}
else
{
Nod *q;
q = new Nod;
q->info = a;
u->urm = q;
u = q;
}
u->urm = NULL;
}
void print(Nod *p)
{
while (p->urm)
{
cout << p->info<<" -> ";
p = p->urm;
}
cout << p->info;
}
void add(Nod *p)
{
while (p)
{
Nod *q;
q = new Nod;
q->info = (p->info + p->urm->info) / 2;
q->urm = p->urm;
p->urm = q;
p = p->urm->urm;
}
}
int main()
{
Nod *p, *u;
p = u = NULL;
char *numar;
numar = new char[100];
cout << "Enter a number: "; cin >> numar;
for (int i = 0; (unsigned)i <= strlen(numar) - 1; i++)
create(numar[i] - '0', p, u);
add(p);
print(p);
system("Pause");
return 0;
}
#包括
使用名称空间std;
结构节点{
国际信息;
Nod*urm;
};
无效创建(常量int&a、节点*&p、节点*&u)
{
if(p==NULL)
{
p=新节点;
p->info=a;
u=p;
}
其他的
{
Nod*q;
q=新节点;
q->info=a;
u->urm=q;
u=q;
}
u->urm=NULL;
}
无效打印(Nod*p)
{
while(p->urm)
{
cout-infourm;
}
计算机信息;
}
无效添加(节点*p)
{
while(p)
{
Nod*q;
q=新节点;
q->info=(p->info+p->urm->info)/2;
q->urm=p->urm;
p->urm=q;
p=p->urm->urm;
}
}
int main()
{
Nod*p,*u;
p=u=NULL;
查尔*努马尔;
numar=新字符[100];
库特>努马;
对于(int i=0;(无符号)i您需要添加
if(p->urm!=0)// this line
q->info = (p->info + p->urm->info) / 2;
因为p->urm可以是NULL
在添加建议行后,我在Visual Studio中进行了尝试,但效果良好。虽然我不知道添加两个地址会得到什么结果。您到底得到了什么错误?在L3_P2.exe中的0x013C5A78处崩溃未经处理的异常:0xC0000005:访问冲突读取位置0x00000000。另外,因为他正在计算平均数据类型of信息应该是float@AshwaniDausodia可能是..但是他通过加上然后取平均值会得到什么呢。。