gpt4 book ai didi

c++ - 链表中的指针错误?

转载 作者:行者123 更新时间:2023-11-28 06:33:43 24 4
gpt4 key购买 nike

我想创建一个带有整数的链表,并且在每两个节点之间我想创建另一个节点,它是前一个节点和后一个节点之间的平均值。

在我的add 函数中,我不明白为什么我的p 指针位于链表的最后一个元素而不是第一个元素。 (这就是我认为它崩溃的原因)。

谢谢。

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

最佳答案

你需要添加,

if(p->urm!=0)// this line
q->info = (p->info + p->urm->info) / 2;

因为 p->urm 可以是 NULL

我在添加建议行后在 Visual Studio 中进行了尝试,它工作正常。虽然我不明白添加两个地址会得到什么。

关于c++ - 链表中的指针错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27119384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com