我只是在试验数据结构的基础知识,我对某些东西感到好奇。正如您在我的代码中看到的那样,在弄乱了p
指针后,我决定删除它。我删除了 p 指针,我认为它也会delete p->proximo
(葡萄牙语中的“proximo”是“下一个”)但显然没有。Acesso 3(葡萄牙语中的 Access 3)的结果是 0 22。
那么首先,如果我删除了指针,为什么我仍然可以连接到p->proximo
指针?好的,但既然没有,这是一件好事,这意味着我现在可以删除东西了。所以后来我决定把 22 的值放到第一个 Nod 上。所以我不会在列表中有损坏的节点。正如你在第 28 行中看到的那样,我尝试使用p = p->proximo
它。但它没有用。当然没有。我删除了指针。有什么办法可以重新创建第一个指针,这样我就可以修复列表,所以第一个节点的值是 22?我试过了
p = new IntNode();
p = p->proximo;
但它也失败了。可能是因为现有的以下节点可能?
我非常感谢你们任何人的帮助
代码:
#include <iostream>
using namespace std;
class IntNode{
public:
IntNode(){
proximo = 0;
}
IntNode(int file, IntNode *next = 0)
{
number = file;
proximo = next;
}
int number;
IntNode *proximo;
};
int main()
{
IntNode *p = new IntNode(15);
cout << "Acesso 1: " << p->number;
p->proximo = new IntNode(22);
cout << endl << "Acesso 2: " << p->number << " " << p->proximo->number;
delete p;
cout << endl << "Acesso 3: " << p->number << " " << p->proximo->number << endl;
p = new IntNode(5);
cout << endl << "Acesso 4: " << p->number << " " << p->proximo->number << endl;
p = p->proximo;
cout << endl << "Acesso 5: " << p->number << " " << p->proximo->number << endl;
delete p->proximo;
cout << endl << "Acesso 6: " << p->number << " " << p->proximo->number << endl;
return 0;
}