説明のために C++ で Linked ArrayList を実装しようとしていますが、問題が発生しましたが、問題を解決する方法がわかりません。私のポインター配列は、ポインターではなく、実際のオブジェクトで構成されているようです。
コードをできるだけ簡潔に保ちます。
//arraylist.h//
class classArrayList {
private:
class Node {
Node();
//accessors
};
Node* classArray;
public:
classArrayList();
};
//arraylist.cpp//
classArrayList::classArrayList() {
Node* node = new Node();
this->setHead(node);
this->setMaxSize(5);
classArray = new Node[5];
this->classArray[0] = *node;
this->setSize(1);
}
void classArrayList::deleteNode( int index ) {
Node* my_current = &this->classArray[index];
//blahblah
}
しかし、ノードを削除しようとすると、「my_current」はこのリストの次または前にリンクしません。位置ゼロで削除しようとしていますが、次はありません。
したがって、間違いなくデータのあるノードがありますが、リンクはありませんが、デバッガーをチェックすると、リンクされたリストは問題なく機能するため、配列が指しているものは何でも台無しです。
リストを指すのではなく、一意のインスタンスを指しているのですが、どうすればこれを修正できますか?
配列に何か新しいものを追加する私のコードは次のとおりです: this->classArray[some_index] = *new_node;
明確にするために、リンクされたリスト内の各オブジェクトを順番に指す配列を持つことができるようにしたいと考えています。そして、配列リストの任意の n で 1 つを要求すると、それをポインターに参照し、必要な n 番目のオブジェクトが見つかるまでリストをインクリメントするのではなく、配列内の位置を介してリスト内のオブジェクトを薄くします.