所以,我决定回顾一些数据结构来保持自己的敏锐度;)
我开始实现哈希表时,想起需要链表来避免哈希冲突。于是我开始了我的链表...
我实现了链表类的所有功能方法(添加、获取、删除等),然后我决定尝试一些之前没有尝试过的东西。重载数组索引运算符,使得可以像访问数组一样检索或分配链表索引。
我成功地实现了检索部分:
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 函数已经完成了所有的索引错误检查和内存分配。如果有任何帮助,将不胜感激。如果无法实现,请在我继续投入时间之前告诉我。谢谢。