因此,我决定回顾一些数据结构以保持敏锐;)
当我想起我需要桶的链表以避免哈希冲突时,我开始实现哈希表。所以我开始了我的链表......
我实现了我的链表类的所有功能方法(添加、获取、删除等),然后我决定尝试一些我以前没有尝试过的东西。重载数组索引运算符,以便可以检索或分配我的链表索引,就好像链表是一个数组一样。
我的检索部分工作没问题:
template <class T>
T LinkedList<T>::operator[](const int &i) {
return get(i);
}
get 函数返回关联节点的数据,而不是节点本身...... setter 应该在提供的值存储到给定索引处的节点的数据属性的地方表现......我的愿景是用户永远不会必须触摸 ListNode 类。
我的最终目标是我可以拥有一个智能的 LinkedList,其行为如下:
LinkedList<int> list;
list[0] = 1; //Allocates memory for 0th node and stores 1 as the data
list[3] = 2; //Allocates memory for 1th,2th,and 3th nodes and sets 2 as the data
//Unassigned nodes should use default constructors on data
int a = list[3]; //Sets a to 2
cout << list[0] << endl; //prints 1
getter 工作正常,但我在 setter 上遇到了麻烦。假设所有索引错误检查和内存分配的 set 函数按原样完成。任何帮助,将不胜感激。如果不可能,请在我花更多时间之前告诉我。谢谢。