我想在C++中實現一個鏈接ArrayList作爲教學目的,雖然我碰到了一個障礙,但我不確定如何解開它。我的指針數組似乎不是由指針組成的,而是由實際對象組成的。鏈接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處請求一個時,將它引用到一個指針,然後通過它在數組中的位置對列表中的對象執行減號操作,而不是通過列表增加,直到找到我想要的第n個。
你的意思是複製一個新創建的節點的地址?我得到一個語法錯誤:「錯誤沒有操作符匹配這些操作數。」我也很困惑你的意思是複製「頭」到每個陣列。我只有1個頭和一個n大小的列表(和尾巴,但那不相關)。我只想要一個數組,其中每個元素都是指向LinkedList中各個元素的點。 (這樣我可以在O(1)時間從數組訪問每個節點,並且如果我想順序地遍歷它,則在O(n)處通過列表本身。 – RaenirSalazar