gpt4 book ai didi

C++简单链表尝试: don't quite understand what's going on

转载 作者:太空宇宙 更新时间:2023-11-04 13:55:49 25 4
gpt4 key购买 nike

我试图在 C++ 中严格实现我目前正在学习的算法,具有简单链表的递归函数。这是我的收获:

#include <iostream>
using namespace std;

class Liste {
private :
int val;
Liste *suivante;
public :
Liste(int val = 0, Liste *suivante = NULL) {
this->val = val;
this->suivante = suivante;
}
void afficherElement() const {
cout << "Adresse : " << this << endl;
cout << "Valeur : " << val << endl;
cout << "Adresse suivante : " << suivante << endl;
cout << endl;
}
int tete() const {
return val;
}
Liste reste() const {
return *suivante;
}
bool estVide() const {
return (suivante == NULL);
}
Liste prefixer(int val) {
Liste *nouvelle = new Liste(val, this);
return *nouvelle;
}
Liste suffixer(int val) {
suivante = new Liste(val);
afficherElement(); // test (last element won't be displayed)
return *suivante;
}
};

int main() {
Liste uneListe(3); // 1st element
uneListe.suffixer(5).suffixer(8).suffixer(10); // adding 3 more

cout << "-----------\n\n";

uneListe.afficherElement(); // displaying 1st element : ok
uneListe.reste().afficherElement(); // displaying 2nd element : pointer is NULL !!???
// uneListe.reste().reste().afficherElement(); --> segmentation fault, predictably enough

return 0;
}

如您所料,它不起作用。当我添加元素时,在 add 方法中调用 display 方法,尽管指针值和下一个元素的地址不同(我不明白为什么),但元素似乎格式正确。但是,添加过程完成后,我尝试再次显示列表,第一个元素与第二个元素链接良好,但随后有一个 NULL 指针值。想知道为什么 ??我见过一个包含两个类(NodeList)的代码,它工作正常,但我想知道我的代码有什么问题。是我在同一个类中创建一个类的新对象吗?

谢谢,

最佳答案

为了解决这个问题你最多改变这一行
列表后缀(int val)

Liste* 后缀(int val)

然后改变这一行
返回 *随即;

返回 suivante;
主要使用这条线
uneListe.suffixer(5)->suffixer(8)->suffixer(10);
而不是
uneListe.suffixer(5).suffixer(8).suffixer(10);

关于C++简单链表尝试: don't quite understand what's going on,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21508280/

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