我目前正在研究学校的哈希表项目,我遇到了一个我无法弄清楚的问题。我的教授为我们提供了具有我们需要实现的功能的类,这些功能使用了模板。
无论如何,在我的插入函数中,我遇到了一个问题,即在我用来实现哈希表的单链表结构中设置一个节点的值。
我的问题是:
void insert(U item1, U item2){ //For my project U is a string
Node<U>* temp = headPtr;
cout << item1 << endl; //Will print out the string no problem
//Assignment attempt
temp->SSN = item1; // causes a seg fault
temp->name = item2;
temp->next = NULL;
if(headPtr->next == NULL){
headPtr->next = temp;
size++;
}
else{
Node<U>* temp2 = headPtr;
while(temp2->next != NULL){
temp2 = temp2->next;
}
temp2->next = temp;
size++;
}
}
这是非常令人沮丧的,因为在以前的任务中我已经能够正确使用这个插入功能,唯一的原因是它不起作用我得出结论是因为我必须遗漏一些我忽略的模板。
这也是我的node.h文件:
#include <iostream>
using namespace std;
template <class T>
struct Node{
T SSN;
T name;
Node<T>* next;
};
我正在尝试将字符串值分配给什么应该是一个字符串值,并且应该按照我的理解去做,但每次运行程序时它都会到达这一点并且只有段错误11。
答案 0 :(得分:1)
你必须替换
Node<U>* temp = headPtr;
带
Node<U>* temp = new Node<U>;