我想在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