私はデータ構造の基本を実験しているだけで、何かに興味がありました。私のコードでわかるように、p
ポインターをいじった後、それを削除することにしました。pポインターを削除しましたが、これも削除されると思いましたdelete p->proximo
(「proximo」はポルトガル語で「next」です)が、明らかにそうではありませんでした。Acesso 3(ポルトガル語でAccess 3)の結果は022でした。
では、まず、ポインターを削除した場合でも、なぜポインターに接続できるのp->proximo
でしょうか。わかりましたが、そうではなかったので、それは良いことです。つまり、今は削除できるということです。そこで、22の値を最初のNodに移動することにしました。だから私はリストに壊れたノードを持っていなかっただろう。p = p->proximo
28行目でわかるように使ってみましたが、うまくいきませんでした。もちろんそうではありませんでした。ポインタを削除しました。リストを修正できるように最初のポインターを再作成して、最初のノードの値を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;
}